Nodeunit - 显式结束测试

时间:2013-06-01 12:20:14

标签: node.js nodeunit

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

1 个答案:

答案 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,它可以确保测试正确失败。