28

尝试测试一些使用 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')

但是,当我运行规范时,测试失败并引发异常。

Failure/Error: Oh no

我在这里做错了什么?

4

2 回答 2

43

要么传递函数

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

使用匿名函数

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

请参阅有关该方法的文档throw以了解更多信息。

于 2013-09-21T13:13:56.447 回答
27

这可能是因为您正在立即执行该功能,因此测试框架无法处理该错误。

尝试类似:

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

如果您知道您没有this在函数中使用关键字,我猜您也可以直接通过manager.test而不绑定它。

此外,您的测试名称并不能反映代码的作用。如果它不能满足新实例的构建,manager = new window.VisualizationsManager应该会失败。

于 2013-09-20T21:39:44.860 回答