2

QUnit stop() に問題があります 基本的に、まったく機能していないようです。私がやろうとしているものの例を次に示します: http://jsfiddle.net/7hZMM/1/

行を削除した場合:

testIframe.remove();

正常に動作し、テストを実行して合格します。

stop() を呼び出すとテストの実行が停止すると推測しましたが (ドキュメントに記載されているように)、load コールバックが完了する前に remove() が呼び出されているため、そうではないようです。

iframe がページから削除される前にテストが実行されるようにするにはどうすればよいですか?

iframe remove をコールバックに入れたくありません。これにはいくつかのインスタンスがあり、それぞれを互いに等しく実行する必要がある場合、コールバック地獄が発生します。

4

2 に答える 2

2

これはドキュメントからは明らかではありませんが、が呼び出されるstop()までテストのティアダウンが開始されないようにするだけです。start()への呼び出しに続いて、現在のテスト ケースのステートメントを延期することは決してありませんstop()

あなたの質問に対する正しい答えは、jhorback によって提供されたものです。除去をティアダウンに入れます。

于 2014-03-20T20:29:25.367 に答える
0

モジュールのティアダウンに削除を入れてみてください。これは、start() メソッドが呼び出されてテキストの実行が完了するまで待機します。

QUnit.module("new test", {
    setup: function () {
        var testIframe = $('<iframe id="testiframe" src="/" />').appendTo("body");
        testIframe.load(function() {
            console.log('done loading iframe');
        });                              
    },

    teardown: function () {
       testIframe.remove();
    }
});

QUnit.stop は、結果を確認する前に非常に多くのミリ秒待機するように QUnit に指示するだけです。また、iframe に有効な src がない場合、iframe ロード イベントがトリガーされない場合があります。

于 2012-07-02T20:05:20.930 に答える