Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodeunit-测试的显式结束_Node.js_Nodeunit - Fatal编程技术网

Node.js Nodeunit-测试的显式结束

Node.js Nodeunit-测试的显式结束,node.js,nodeunit,Node.js,Nodeunit,我有2个nodeunit测试用例,如果第一个失败,我不想运行第二个测试用例。(进程应该跳过测试第二个测试用例并获得正确的结果。)我如何做同样的事情。 我已经编写了示例代码,在第一个测试用例中,我指定了期望数应该是1。即使第一个测试用例失败,第二个测试用例仍然会执行。这里可能有什么问题 exports.testSomething = function(test){ test.expect(1); test.ok(false, "this assertion should fail

我有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();
};

一般来说,让单独的测试相互依赖是一个坏主意,测试框架不支持这种事情,因为这一点。Nodeunit测试是在任何一个测试开始之前声明和处理以执行的,因此无法更改运行的测试

对于这个特定的例子,如果add失败,那么delete失败是有道理的。获得更多的输出可能有点烦人,但它正在做它应该做的事情

这可能不适用于此原因,但一种选择是为
删除
测试设置一个单独的部分,您可以使用
设置
设置
删除
所需的所有内容,而不必实际调用
添加

更新
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();
},
“测试”:函数(测试){
测试。期望(5);
test.ok(true,“应该通过”);
对于(变量i=0;i<4;i++){
setTimeout(函数(){
test.ok(false,“应失败”);
}, 5);
}
test.done();
},

如果没有
测试。除了(5)
,测试将通过,因为在setTimeout中的行运行之前调用了
done
,因此测试无法知道is遗漏了什么。通过让
expect
,它可以确保测试正确地失败。

通常测试应该是独立的。为什么要尝试这种行为?@loganfsmyth例如,我有添加和删除测试用例,如果添加失败,我想跳过删除测试用例,因为添加函数的输出将用于删除。谢谢,因为这是一个坏主意,我肯定会使用安装程序删除测试用例,并确保add和delete是两个独立的测试用例。我只有一个疑问,test.expect做什么。当指定数量的断言失败时,是否应终止单个测试用例(或所有测试用例)?@Royalpindo更新了我的答案。