在当前的IT上停止执行失败的预期,但继续在Jasmine中进行规范测试

时间:2016-05-25 15:42:41

标签: javascript unit-testing jasmine

目前,如果expect()失败,则继续执行测试。这会导致抛出异常并使构建崩溃(在示例中)。

使用"stopSpecOnExpectationFailure" : true会导致整个规范在第一次expect()失败时停止执行。

当jasmine继续执行规范中的其余it()函数时,有没有办法停止执行并使当前it()失败?

我正在寻找一种方法来完成下面的例子。

示例:

it('should fail and stop on first expect', function() {
  var test;
  expect(test).toBeDefined(); //fail test and stop execution of this it() only.
  test.body; //stopping would prevent an exception being thrown
});

it('should run this test still', function() {
  expect(true).toBe(true);
});

1 个答案:

答案 0 :(得分:2)

Jasmine并没有像预期的那样真正地工作 - 测试条款应该期待什么。它不会给你分支或条件功能。

你真正明智的做法是:

  expect(test).toBeDefined(); //fail test and stop execution of this it() only.

  if (test) {
     test.body; //stopping would prevent an exception being thrown
  }

如果没有测试并且没有失败,这将无法期望。它会继续下去。就像你说的那样,你不想用其他Jasmine指令来阻止一切。

您也可以使用失败声明,这可能看起来更整洁:

if (test) {
     test.body
} else {
     fail('Hey your test object is null!');
}