目前,如果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);
});
答案 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!');
}