我想在测试期间测试特定功能不会运行回调。例如,在下面的简化代码中,checker.check()检查数字,此特定测试中给出的数字不应运行回调。
test('Do not raise false alerts', function(done){
var checker = setupChecker(function(){
done('bad alert')
})
checker.check(60)
checker.check(70)
checker.check(80)
})
基本上,如果永远不会调用done()
,我希望测试超时。
我当然可以为此目的使用setTimeout()
,但我认为Mocha可能会为此目的而内置。
我还可以在checker()中添加第二个回调函数,以便何时不应该发出警报,但这会让我感到震惊test-induced design damage而我想避免这种情况。
答案 0 :(得分:0)
这种断言的最佳位置是exit
事件process
,因为之后什么都不会发生(好吧,除了其他exit
听众之外,请记住这一点):< / p>
test('Do not raise false alerts', function(){
var badAlert = false;
var checker = setupChecker(function(){
badAlert = true
})
process.on('exit', function () {
assert.ok(!badAlert);
});
checker.check(60)
checker.check(70)
checker.check(80)
})
不幸的是,这种模式对mocha的效果并不好。它将显示测试通过,然后在发生故障时进行堆栈跟踪。