Тестирование исключений JS с помощью Mocha/Chai
Попытка проверить код, который генерирует исключение с помощью Mocha/Chai, но не повезло, вот простой код, который я пытаюсь проверить:
class window.VisualizationsManager
test: ->
throw(new Error 'Oh no')
Вот мой тест:
describe 'VisualizationsManager', ->
it 'does not permit the construction of new instances', ->
manager = new window.VisualizationsManager
chai.expect(manager.test()).to.throw('Oh no')
Однако, когда я запускаю spec, тест терпит неудачу и генерирует исключение.
Failure/Error: Oh no
что я здесь делаю неправильно?
Ответы
Ответ 1
Вероятно, потому, что вы выполняете функцию сразу, поэтому тестовая среда не может справиться с ошибкой.
Попробуйте что-то вроде:
chai.expect(manager.test.bind(manager)).to.throw('Oh no')
Если вы знаете, что вы не используете ключевое слово this
внутри функции, я думаю, вы могли бы просто передать manager.test
без привязки к ней.
Кроме того, ваше тестовое имя не отражает то, что делает код. Если он не улавливает конструкцию новых экземпляров, manager = new window.VisualizationsManager
должен выйти из строя.
Ответ 2
Либо передайте функцию, либо выполните анонимную функцию:
chai.expect(manager.test).to.throw('Oh no')
или (я думаю, что это лучший способ)
chai.expect(() => manager.test()).to.throw('Oh no')