使用setTimeout对多个asyncTest进行QUnit

时间:2015-01-26 12:24:22

标签: javascript unit-testing qunit

应该发生的是,当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);
});

2 个答案:

答案 0 :(得分:1)

这里有几点要提。首先,我假设您实际上正在使用ok()断言...没有test()断言。也就是说,当我运行上面的代码时,但是使用ok()断言,测试会按顺序运行。 但是,一般来说,您不应该编写彼此依赖的测试。这可能导致各种问题,包括竞争条件,环境污染等。您应该尝试编写idempotent的测试。

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

基本上,这里的答案是你拥有的代码(ok() versus test()`除外)对我来说效果很好:测试按顺序运行。

答案 1 :(得分:0)

当前版本的QUnit有spsample(be, type="hexagonal", cellsize=1) # SpatialPoints: # x y # 2 4.205421 50.40138 # 3 5.205421 50.40138 # 4 6.205421 50.40138 # 5 3.705421 51.26741 # 6 4.705421 51.26741 # Coordinate Reference System (CRS) arguments: # +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 # +towgs84=0,0,0

traceback()

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