首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用setTimeout的QUnit Multiple asyncTest

使用setTimeout的QUnit Multiple asyncTest
EN

Stack Overflow用户
提问于 2015-01-26 20:24:22
回答 2查看 203关注 0票数 0

应该发生的情况是,当add1完成时,应该调用add2,然后调用add3,但是使用此代码无法工作。

Add2被调用到fast,add3也是如此。

代码语言:javascript
复制
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);
});
EN

回答 2

Stack Overflow用户

发布于 2015-01-26 22:53:10

这里有几件事要提一下。首先,我假设您实际上使用的是ok()断言...没有test()断言。也就是说,当我运行上面的代码时,但是使用ok()断言,测试确实是按顺序运行的。然而,,一般来说,你不应该写相互依赖的测试。这可能会导致各种各样的问题,包括种族条件,环境污染等。您应该尝试编写idempotent形式的测试。

QUnit确实按照定义的顺序运行测试,但有一个例外:在重新运行测试失败的测试文件时,库将首先重新运行失败的测试。您可以使用reorder config option禁用此功能。

基本上,这里的答案是您拥有的代码(除了ok() versus测试()`)对我来说工作得很好:测试是按顺序运行的。

票数 1
EN

Stack Overflow用户

发布于 2016-08-01 05:58:20

当前版本的QUnit具有done = assert.async();

代码语言:javascript
复制
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);
});

也许链接结果回调将有助于创建同步行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28150082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档