Подтвердить что ты не робот

Тестирование исключений 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

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

4b9b3361

Ответ 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')