0

setupモジュール レベルとteardownメソッドを使用する一連の QUnit テストを実行しています。start()これらが呼び出されると、テスト内で使用すると混乱するように見えることに気付きましたstop()。これにより、セットアップで使用できる特定のアイテムが、実行される一部のテストで使用できないため、問題が発生します。

編集:これは、テストスクリプトをプログラムでロードしたときにのみ発生することに気付きました(スクリプトローダー: LABjsを使用しています)。それに応じて、この質問の件名と内容を変更しました。次のようなテストをロードしています:

$LAB.script('/static/tests.js')

なぜこれが起こるのかはまだわかりません。

これが私のテストモジュールのサンプルです:

module('Class Foo', {
  setup: function() {
    console.log('setup called');
  },
  teardown: function() {
    console.log('teardown called');
  }
});

test('Test1', function() {
  stop();
  console.log('test1');
  ok(true);
  start();
});

test('Test2', function() {
  stop();
  console.log('test2');
  ok(true);
  start();
});

test('Test3', function() {
  stop();
  console.log('test3');
  ok(true);
  start();
});

これにより、コンソール出力が生成されます (setup は 2 回呼び出され、その後は呼び出されないことに注意してください)。

setup called
test1
teardown called
(2)setup called
test3
teardown called
test2
teardown called 

開始/停止を削除するか、プログラムで読み込まれないようにテスト ファイルを変更します (つまり、従来のタグを使用します)。

test('Test3', function() {
  console.log('test3');
  ok(true);
});

より期待される実行順序が得られます。

setup called
test1
teardown called
setup called
test2
teardown called
setup called
test3
teardown called 

これがどのように機能するべきかについて何か誤解していますか?

4

1 に答える 1

0

QUnit は、起動時にテスト スクリプトが読み込まれることを望んでいるようです。このアクションは構成可能であるため、すべてのテスト スクリプトが利用可能になるまで QUnit の開始を延期するために、次のセットアップが機能することがわかりました。

QUnit.config.autostart = false;
$LAB.script('/static/tests.js').wait(function() {
  QUnit.start();
});

なぜこれが起こるのかまだわからないので、その点に関する回答を見てみたいと思います(または、それがわかったら更新します!)が、この解決策で今のところはうまくいきます。

于 2012-07-26T05:28:58.437 に答える