应该发生的情况是,当add1完成时,应该调用add2,然后调用add3,但是使用此代码无法工作。
Add2被调用到fast,add3也是如此。
asyncTest('add1', function () {
setTimeout(function () {
test('add1 t1', function () {
ok(1==1, 'ok');
});
QUnit.start();
}, 500);
});
asyncTest('add2', function () {
setTimeout(function () {
test('add2 t1', function () {
ok(2==2, 'ok');
});
QUnit.start();
}, 500);
});
asyncTest('add3', function () {
setTimeout(function () {
test('add3 t1', function () {
ok(3==3, 'ok');
});
QUnit.start();
}, 500);
});发布于 2015-01-26 22:53:10
这里有几件事要提一下。首先,我假设您实际上使用的是ok()断言...没有test()断言。也就是说,当我运行上面的代码时,但是使用ok()断言,测试确实是按顺序运行的。然而,,一般来说,你不应该写相互依赖的测试。这可能会导致各种各样的问题,包括种族条件,环境污染等。您应该尝试编写idempotent形式的测试。
QUnit确实按照定义的顺序运行测试,但有一个例外:在重新运行测试失败的测试文件时,库将首先重新运行失败的测试。您可以使用reorder config option禁用此功能。
基本上,这里的答案是您拥有的代码(除了ok() versus测试()`)对我来说工作得很好:测试是按顺序运行的。
发布于 2016-08-01 05:58:20
当前版本的QUnit具有done = assert.async();。
QUnit.test("method Debug.numberOne is called", function (assert) {
var done = assert.async(); // Pause the test
localStorage.setItem('uid', '1');
function checkNumberOne() {
assert.ok(numberOneIsCalled, " detected user is development user #1");
done();
}
setTimeout(checkNumberOne, 6000);
});也许链接结果回调将有助于创建同步行为。
https://stackoverflow.com/questions/28150082
复制相似问题