3

我需要一点帮助来理解 QUnit internas。我不时阅读它的源代码,但是当涉及到异步测试时,我仍在编写奇怪的测试。我了解异步测试的概念,以及 stop() 和 start() 方法(以及为什么需要它们),但是当我将它们与 setup 和 teardown 结合起来时,我会遇到很多奇怪的情况。

这是我的测试代码:

use(['Psc.Exception','Psc.Code'], function () {
  module("async", {
    setup: function () {
      console.log('setup');
    }, teardown: function () {
      console.log('teardown');
    }
  });

  asyncTest("test1", function () {
    expect(0);

    console.log('test1');
    start();
  });

  asyncTest("test2", function () {
    expect(0);

     console.log('test2');
     start();
  });

  asyncTest("test3", function () {
    expect(0);

    console.log('test3');
    start();
  });

  asyncTest("test4", function () {
    expect(0);

    console.log('test4');
    start();
  });

  asyncTest("test5", function () {
    expect(0);

    console.log('test5');
    start();
  });
});

尽管这些都是异步测试,但我想我会在控制台中得到类似的东西:

setup
test1
teardown
setup
test2
teardown
setup
test3
teardown
...

因为我认为 qunit 会在测试机构周围调用 setup 和 teardown ?

但我把一切都搞混了,从请求到请求以另一种方式洗牌。

setup
test1
teardown
setup
setup
setup
setup
test5
teardown 
test4
teardown
test3
teardown
test2
teardown

有人能够逐步解释吗?

4

1 回答 1

5

这是一个记录在案的问题:

http://api.qunitjs.com/QUnit.config/

建议在异步加载测试时将 QUnit.config.autostart 设置为 false。这是我的情况,因为“使用”是异步执行的。

头部看起来像这样:

QUnit.config.autostart = false;
use(['Psc.Exception','Psc.Code'], function () {

  QUnit.start();
  module("async", {

所以它基本上就像做 stop() 和 start() 但加载测试本身。我对其进行了测试,现在拆解/设置/测试以正确的顺序正确执行

于 2012-10-03T05:33:47.630 回答