用Chai.js测试失败

Sio*_*733 23 javascript node.js chai

在JUnit中,您可以通过执行以下操作来使测试失败:

fail("Exception not thrown");
Run Code Online (Sandbox Code Playgroud)

使用Chai.js实现相同目标的最佳方法是什么?

Dmy*_*nko 52

assert.fail().你可以像这样使用它:

assert.fail(0, 1, 'Exception not thrown');
Run Code Online (Sandbox Code Playgroud)

  • 还有一个[**`expect.fail()`**](http://chaijs.com/api/bdd/#method_fail) (9认同)
  • ......如果没有其他选择,你的答案是正确的,所以你也得到我的upvote :) (2认同)

has*_*nge 26

有许多方法可以假装失败 - 就像assert.fail()@DmytroShevchenko 所提到的那样 - 但通常,可以避免这些拐杖并以更好的方式表达测试的意图,如果测试失败,这将导致更有意义的消息.

例如,如果您希望抛出异常,为什么不直接这样说:

expect( function () {
    // do stuff here which you expect to throw an exception
} ).to.throw( Error );
Run Code Online (Sandbox Code Playgroud)

如您所见,在测试异常时,您必须将代码包装在匿名函数中.

当然,你可以通过检查更具体的错误类型细化测试,预期的错误信息等.请参阅.throw柴文档为多.

  • 我完全同意你所概述的是一种更好的方法. (2认同)

Nig*_*ist 10

你试一试

expect.fail("custom error message");
Run Code Online (Sandbox Code Playgroud)

或者

should.fail("custom error message");
Run Code Online (Sandbox Code Playgroud)

如柴文档所述:https : //www.chaijs.com/api/bdd/#method_fail