2013-09-20 4 views
19

Попытки проверить код, который генерирует исключение с мокко/Chai, но не имея никакой удачи, вот простой код, который я пытаюсь тест:Тестирование JS исключения с Mocha/Chai

class window.VisualizationsManager 

    test: -> 
    throw(new Error 'Oh no') 

Вот мой test:

describe 'VisualizationsManager', -> 

    it 'does not permit the construction of new instances', -> 

    manager = new window.VisualizationsManager 

    chai.expect(manager.test()).to.throw('Oh no') 

Однако, когда я запускаю спецификацию, тест выходит из строя и выдает исключение.

Failure/Error: Oh no 

что я делаю неправильно здесь?

ответ

17

Возможно, это потому, что вы выполняете функцию сразу, поэтому тестовая среда не может справиться с ошибкой.

Попробуйте что-то вроде:

chai.expect(manager.test.bind(manager)).to.throw('Oh no') 

Если вы знаете, что вы не используете this ключевое слово внутри функции, я думаю, вы также можете просто передать manager.test без привязки его.

Кроме того, ваше тестовое имя не отражает то, что делает код. Если он не устраивает строительство новых экземпляров, manager = new window.VisualizationsManager должен потерпеть неудачу.

23

Либо передать функции:

chai.expect(manager.test).to.throw('Oh no'); 

Или использовать анонимную функцию:

chai.expect(() => manager.test()).to.throw('Oh no'); 

Смотрите documentation on the throw method, чтобы узнать больше.

Смежные вопросы