9

テストするJavascriptは少量ですが、ページ全体で機能します。たとえば、「#t34」のような番号付きのIDで要素を検索します。考えられるさまざまな構成をテストするために、いくつかの異なるページを作成する必要があります。qunit-fixtureを使用してテストにアクセスするためのDOMツリーを作成できることがわかりますが、各ページ構成はIDで要素を検索するため、完全なページである必要があります。

そこにあるさまざまなqUnitチュートリアルは、単純な算術演算を実行する純粋なJavascript関数の単純な例に焦点を合わせているようです。さまざまなファイルを使用して実際のテストスイートを構築する方法を理解するのに助けが必要です。

詳細を更新:私は、Pythonコードカバレッジツールであるcoverage.pyの所有者です。HTMLレポートを生成します。これらのレポートには、双方向性を少し追加するためのjQueryが含まれています。かなり多く追加しているので、テストを自動化したいと思います。HTMLは次のようになります。サーバーは関与していません。これらはローカルディレクトリに書き込まれたファイルであるため、ajaxの機会はありません。さまざまなページ構成に対してテストを実行したいと思います。主に、赤と緑の色のコードチャンクのエッジケースを使用します。

$("#t123")私のコードは(たとえば)のように番号でソース行にアクセスするため、IDが競合するため、同じDOMに複数のHTMLの「ページ」を含めることはできません。HTMLのさまざまなページに対してqUnitを実行するにはどうすればよいですか?

4

2 に答える 2

5

#qunit-fixture は QUnit によって自動的にリセットされます。つまり、各テストで使用されるマークアップを入力するか、空のままにして各テストで入力して自動レストを活用することができます。または、各テスト後に個別にリセットするマークアップを使用するだけです。

モジュールメソッドを使用して、テストごとのセットアップと分解をリファクタリングできます: http://docs.jquery.com/QUnit/module

この場合、各テストに (同期) ajax リクエストを使用し、必要なページ マークアップを #qunit-fixture 要素にロードするのが適切なオプションのように思えます。そうすれば、QUnit は後でリセットされるため、カスタム セットアップのみが必要になります。

ファイルシステムのローカル ファイルだけを扱っている場合でも、それらがテスト スイート ファイルと同じディレクトリにある限り、ajax 経由でロードできるはずです。

そうでない場合は、そのディレクトリで「open http://localhost:8080/ && python -m SimpleHTTPServer 8080」などを使用して、ローカルサーバーを実行するのは簡単です。

于 2011-03-28T17:22:15.600 に答える
1

ページ全体と DOM をテストするには、Selenium http://seleniumhq.org/のようなものを使用 します。JS テストにある程度精通しているので、http://www.phantomjs.org/とhttp :// zombie.labnotes.org/

これらを使用すると、基本的に node.js サーバーを使用してページをロードし、そこから node.js コマンドラインまたはスクリプトを通じて DOM に完全にアクセスできます。コマンドラインでの firebug スクリプトのようなものと考えてください (代わりに、firebug プラグインでも同じことができます)。アサートを実行して、id 要素が存在することを確認し、クリック要素などを切り替えることができます。

(ちなみに私もbocoupにいました:D)

于 2011-03-28T16:42:40.207 に答える