2011-02-24 67 views
0

我想使用JsTestDriver來驅動我的QUnit測試,但我對如何處理#qunit-fixture標記感到困惑。與JSTestDriver一起使用QUnit

標準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具有可用於加載和運行測試的script.js一個QUnitAdapter,但我看不出有任何的住宿用於獲取標記在#qunit-fixture

我錯過了什麼嗎?適配器是否應該能夠運行現有的QUnit測試?或者它只是一種使用QUEST的斷言框架與JsTestDriver?

回答

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樣式應用於生成的標記。這使得在你的測試用例中包含CSS很困難,對於你想要測試的測試在DOM元素上獲取或設置樣式屬性。

1

JsTestDriver有一個QUnit adapter。這提供了QUnit API的一個子集,以使用JsTestDriver運行測試。它實際上並不使用QUnit,因此不支持異步測試以及其他缺失的功能。取決於您測試的內容,它可能仍然有用。

+0

謝謝。我發現使用QUnit的[替代QUnit插件](https://github.com/jivesoftware/QUnitTestRunnerPlugin),應該支持異步和其他缺少的功能。但即使使用該插件,我也沒有看到加載'#test-fixture'標記的任何內容。 – 2011-02-26 15:34:30