0

JsTestDriverを使用してQUnitテストを実行したいのですが、マークアップをどうするかについて混乱してい#qunit-fixtureます。

標準の QUnit テスト ランナーは HTML ページです。

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <link rel="stylesheet" href="/qunit/qunit.css" type="text/css" />
  <script type="text/javascript" src="/qunit/qunit.js"></script>
  <script type="text/javascript" src="test-script.js"></script>
</head>
<body>
 ...
 <div id="qunit-fixture">
    *** tests depend on markup that goes here ***
 </div>
</body>
</html>

JsTestDriver にはtest-script.js を読み込んで実行するために使用できるQUnitAdapter#qunit-fixtureがありますが、 .

何か不足していますか?アダプターは既存の QUnit テストを実行できるはずですか? それとも、JsTestDriver で QUnit のアサーション フレームワークを使用する方法ですか?

4

2 に答える 2

5

JsTestDriver は、HTML フィクスチャを提供するための入力として外部 HTML ページを使用しないという点で、他のいくつかのテスト フレームワークとは異なります。

代わりに、HtmlDoc 機能を使用して、テスト ケース定義の一部として HTML フラグメントを作成 (または追加) する機能を提供します。

http://code.google.com/p/js-test-driver/wiki/HtmlDoc

これにより、テストで HTML を保存できます。たとえば、次のようになります。

TestCase("Test HtmlDoc Features", {  
    "test creating an isolated dom fragment": function() {
        /*:DOC foo = <div id="demo"><p>foo</p></div>*/
        assertEquals("Foo is a dom fragment with id 'demo'", this.foo.id, "demo");
    },
    "test appending HTML to the body": function() {
        /*:DOC += <div id="demo"><p>foo</p></div>*/
        assertEquals("HTML is appended to the body", document.getElementById("demo").innerHTML, "<p>foo</p>");
    }
});

残念ながら、彼らのアプローチにはいくつかの制限があります。たとえば、インライン スタイルは HTML タグに直接適用できますが、スタイル ブロックまたはリンク タグを外部 CSS ファイルに挿入しても、生成されたマークアップに CSS スタイルは適用されません。これにより、DOM 要素のスタイル プロパティの取得または設定をテストするテストで、テスト ケースに CSS を含めることが難しくなります。

于 2011-04-04T00:58:01.100 に答える
1

JsTestDriver にはQUnit アダプターがあります。これは、JsTestDriver でテストを実行するための QUnit API のサブセットを提供します。実際には QUnit を使用しないため、非同期テストやその他の欠落している機能をサポートしていません。何をテストするかによっては、まだ役に立つかもしれません。

于 2011-02-26T13:37:28.450 に答える