3

QUnitインターナを理解するのに少し助けが必要です。私は時々そのソースを読みますが、非同期テストに関してはまだ奇妙なテストを書いています。非同期テストの概念、およびstop()メソッドとstart()メソッド(およびそれらが必要な理由)は理解していますが、それらをセットアップおよびティアダウンと組み合わせると、多くの厄介な状況が発生します。

これが私のテストコードです:

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
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 に答える