有没有办法让QUnit.js
在单个测试失败后不运行剩余的测试?
使用以下代码作为示例:
QUnit.test('test1', function(assert) {
assert.equal(1,1);
assert.equal(1,2);
assert.equal(3,3);
});
QUnit.test('test2', function(assert) {
assert.equal(4,4);
assert.equal(5,5);
assert.equal(6,6);
});
有没有办法让QUnit在assert.equal(1,2)
之后停止执行?这意味着永远不应该运行test2
。
答案 0 :(得分:0)
好的,基于我上面的评论,我运行了下面的代码,并且我想你想要它们停止的事情。再次,正如我在评论中所说,我真的会调查这是否是一个好主意。通常,您希望您的测试具有幂等性,以便任何一个失败都不会影响任何其他测试。
请注意,我们必须在这里将reorder
配置选项设置为false
,否则QUnit将首先尝试运行先前失败的测试以“短路”,但您不希望这样我正在猜测。我还添加了一个“test0”来查看填充效果。
QUnit.config.reorder = false;
// This is how we detect the failure and cancel the rest of the tests...
QUnit.testDone(function(details) {
console.log(details);
if (details.name === 'test1' && details.failed) {
throw new Error('Cannot proceed because of failure in test1!');
}
});
QUnit.test('test0', function(assert) {
assert.equal(1,1);
assert.equal(2,2);
assert.equal(3,3);
});
QUnit.test('test1', function(assert) {
assert.equal(1,1);
assert.equal(1,2);
assert.equal(3,3);
});
QUnit.test('test2', function(assert) {
assert.equal(4,4);
assert.equal(5,5);
assert.equal(6,6);
});
您不会得到任何取消测试的视觉反馈,因为这并不是真正与QUnit UI交互。但是,因为我们抛出了Error
对象,您可以打开开发人员控制台并在那里看到输出:
答案 1 :(得分:0)
在测试用例失败后停止QUnit的最佳方法是
QUnit.testDone( function( details ) {
if (details.failed>0){
QUnit.config.queue.length = 0;
}
});