我有2个 nodeunit 测试用例,如果第一次失败,我不想运行第二个测试用例。(进程应该跳过测试第二个测试用例并得到正确的结果。)我该如何做相同。 我已经编写了示例代码,在第一个测试用例中,我指定的数量应该是1。即使第一个测试用例失败,第二个测试用例仍然执行。这可能是什么问题。
exports.testSomething = function(test){
test.expect(1);
test.ok(false, "this assertion should fail");
test.done();
};
exports.testSomethingElse = function(test){
test.ok(true, "this assertion should pass");
test.done();
};
答案 0 :(得分:1)
一般来说,单独测试依赖于彼此是一个坏主意,测试框架不会因此而支持这种事情。 Nodeunit测试在任何一个测试开始之前被声明和处理以便执行,因此无法更改运行的测试。
对于该特定示例,如果添加失败,则删除失败是有意义的。获得更多输出可能有点烦人,但它正在做它应该做的事情。
这可能不适用于此原因,但有一个选项是为delete
测试设置一个单独的部分,您可以使用setUp
设置delete
所需的所有内容而无需实际上拨打add
。
test.expect
用于指定单个测试中预期的断言数。如果您的测试具有异步逻辑,那么您才真正需要它。例如:
'test': function(test){
test.expect(5);
test.ok(true, 'should pass');
for (var i = 0; i < 4; i++){
setTimeout(function(){
test.ok(false, 'should fail');
}, 5);
}
test.done();
},
如果没有test.expect(5)
,测试会通过,因为在调试setTimeout中的行之前调用done
,因此测试无法知道错过了什么。通过expect
,它可以确保测试正确失败。