用Chai.js测试失败

时间:2015-11-17 11:41:37

标签: javascript node.js chai

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

fail("Exception not thrown");

使用Chai.js实现同样目标的最佳途径是什么?

5 个答案:

答案 0 :(得分:48)

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

assert.fail(0, 1, 'Exception not thrown');

答案 1 :(得分:24)

有很多方法可以假装失败 - 比如@DmytroShevchenko提到的SELECT IF(`admin`.`role`= 1,TRUE,FALSE) FROM ... ,但通常情况下,可以避免这些拐杖并以更好的方式表达测试的意图,这将导致如果测试失败,则发送更有意义的消息。

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

assert.fail()

正如您所看到的,在测试异常时,您必须将代码包装在匿名函数中。

当然,您可以通过检查更具体的错误类型,预期的错误消息等来优化测试。有关详情,请参阅Chai docs中的expect( function () { // do stuff here which you expect to throw an exception } ).to.throw( Error );

答案 2 :(得分:2)

我还偶然发现这里不是直接的fail(msg)。 有一段时间,我与...一起工作。

assert.isOk(false, 'timeOut must throw')

(在望不到的地方使用它,即在承诺测试中……)

Chai与标准ES6错误兼容,因此可以正常工作:

throw new Error('timeOut must throw') 

...或者,因为assert itself is essentially the same as assert.isOK ...我最喜欢的是:

assert(false,'timeOut must throw')

…嗯,几乎短于assert.fail(…

答案 3 :(得分:1)

只需尝试

expect.fail("custom error message");

should.fail("custom error message");

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

答案 4 :(得分:0)

我是这样的

const expect = require('chai').expect;
const exists = true;
expect(!exists).to.throw('Unknown request type');