0

document.write()JavaScriptとCSSをロードするタグを挿入して、DOMを変更するために 使用する2つのユーティリティ関数があります。

QUnitを使用して、テスト結果ページの実際のDOMに影響を与えることなく、インジェクションが正しく行われていることをテストすることは可能ですか?

私は出来ます:

  • 私が定義する関数になるようにdocument.write()、おそらくで上書きしsetupてリセットします。teardownしかし、彼らは私が彼らがすることになっていることをするための呼び出しをテストしてdocument.write()いません。

  • js-test-driverのようなものを使用して、コマンドラインからJavaScriptを実行します(ただし、テスト結果ページを利用できるようにしたいのですが)。

  • これらのユーティリティテスト専用に別のテスト結果ページを作成して、これらの結果が他のテストに影響を与えないようにします(ただし、実際には単一の統合ページが必要です)。

  • ユーティリティ関数に空のJSファイルとCSSファイルを渡してロードし、実際に結果ページに影響を与えないようにします。

だから私には選択肢があります。

しかし、私が本当に望んdocumentでいるのは、実際の現在のドキュメント以外のドキュメントにすることです。これが可能かどうかはわかりません。(実際、それが意味をなすかどうかさえわかりません。)これは可能ですか?iframeなどでできるかもしれません。

それがまったく役立つ場合は、単体テストしたい関数のタイプの例を次に示します。

function(jsFile){
    document.write('<script type="text/javascript" src="'+jsFile+'"></script>');
}
4

1 に答える 1

0

テストする必要がないことに気づきましたdocument.write()。私のコードが期待されるものを送信していることをテストする必要があるだけですdocument.write()。そこで、上記の最初のオプションを使用して、テスト用に一時的に再定義しましたdocument.write()setup()teardown()

于 2011-10-18T02:46:27.140 に答える