【发布时间】:2015-03-25 00:29:42
【问题描述】:
我正在用 NodeJS 编写 API,并使用 Mocha、Chai 和 SuperTest 进行测试。我正在使用一种典型的测试驱动方法,首先编写测试,然后用工作代码满足这些测试。然而,由于所有不同排列的测试数量,我已经开始编写空占位符测试,以便我拥有所有 it('should...') 描述,以提醒我在使用该功能时要测试什么。例如:
it 'should not retrieve documents without an authorized user', (done) ->
done()
问题在于 done() 在没有任何断言的情况下被调用,因此测试被认为通过了,所以我添加了以下断言。
false.should.equal true # force failure
但这是一种 hack,Mocha 显示的失败原因似乎令人困惑,尤其是当其他完整测试可能失败时。
在 Mocha 中是否有任何官方方法可以故意使此类占位符测试失败?
【问题讨论】:
-
我不知道任何官方方式,但对于这样的事情,我会考虑使用 should library 并做类似
should.fail('not yet implemented')的事情。也许将其包装在您自己的模块/函数中并在整个测试中重用它。在 Chai 中,我唯一能想到的就是包装一些抛出的错误,但这可能看起来很丑。 -
@JustinMaat 遗憾的是,chai 的 should 实现没有
fail()方法。也许我可以考虑切换断言库。 -
我不知道我是否会切换实际的库。查看文档,我在 assert section 下看到了一个 fail() 函数。这实际上是一个非常好的问题,因为我也觉得这很有用 :) 我会尝试了解要点并尽快在此处提交实际答案
-
@JustinMaat
assert.fail()可能是一个合适的答案,因为它不需要更改任何模块。
标签: node.js unit-testing mocha.js chai