0

我有 2 个nodeunit测试用例,如果第一次失败,我不想运行第二个测试用例。(过程应该跳过测试第二个测试用例的正确结果。)我该怎么做。我已经编写了示例代码,在第一个测试用例中,我指定的期望数量应该是一个。即使第一个测试用例失败,第二个测试用例仍然执行。这里可能是什么问题。

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

1 回答 1

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),测试将通过,因为done在 setTimeout 中的行运行之前调用,所以测试无法知道它错过了一些东西。通过拥有expect,它可以确保测试正确地失败。

于 2013-06-01T12:48:32.430 回答