2016-03-02 35 views
0

我剛開始使用QUnit,並且遇到了問題。靜態選擇的變量在運行QUnit測試時會丟失

當我寫我的JavaScript文件,我把我所有的變量在頁面的頂部是這樣的:

var $input1 = $('#input1'); 
var $submit = $('#submit'); 

然後,我電匯像這樣我的事件:

$submit.on('click', function (e) { 
    submit(e); 
}); 

這很好,而且是一種很好的方式,無需每次需要時都要繼續查找所有元素。 (到處都是亂碼$('#submit')

但是,現在我正在用QUnit進行測試,qunit-fixture div中的項目在每次運行新測試時都會被替換。 (我重寫一些代碼,別人沒有,所以有一些初步的現有的測試。)

截至目前,測試,其他人寫在附加的的beforeEach一些靜態HTML的qunit-fixture DIV模塊。

最後一點需要注意的是,這是ASP.NET MVC項目的一部分,我們正在使用chutzpah運行測試,因此我們沒有製作明確的HTML頁面來運行每個測試文件。我們的意圖是在命令行中運行它們,特別是作爲構建過程的一部分。

當我們沒有爲他們建立完整的HTML頁面時,我該如何獲得那些應該始終保持在頁面上的靜態項目?

編輯 我已經做了一點研究這一點,因爲我在測試文件中加入HTML到DOM,當我在上面選擇變量,這些元素都沒有上該頁面還在我正在測試的文件中。

回答

0

事實證明,Chutzpah是問題所在。他們用來測試的HTML絕對是可怕的。所有腳本都在<head>標記中,因此在將任何HTML添加到DOM之前將始終處理它們。解決這個問題的方法是使用Customizable Test Harness

不幸的是,他們的文檔沒有提供關於如何實際製作此文檔的任何信息。他們列出了你需要包含的項目以替換它們,但是(和所有的JavaScript文件一樣),它們的順序非常重要,並不一定按照它們的順序排列。這是我用過的,它很棒。

<html> 
    <head> 
     <title>Chutzpah tests</title> 

     @@[email protected]@ 
    </head> 
    <body> 
     <h1 id="qunit-header">Unit Tests</h1> 
     <h2 id="qunit-banner"></h2> 
     <h2 id="qunit-userAgent"></h2> 
     <ol id="qunit-tests"></ol> 
     <div id="qunit-fixture">test markup, will be hidden</div> 

     @@[email protected]@ 
     @@[email protected]@ 
     @@[email protected]@ 

     @@[email protected]@ 

     @@[email protected]@ 

     @@[email protected]@ 
     @@[email protected]@ 
    </body> 
</html> 

這樣,您就可以將任何想要的靜態HTML添加到文件中。不過,也有一些警告到:

  • qunit-fixture DIV MUST處於同一級別的其他元素QUnit。
  • qunit-fixture div 必須緊跟在qunit-tests div之後。

但是,通過在頁面底部包含所有的CSS,它的行爲就像您希望從自己寫在同一位置的任何HTML頁面所預期的那樣。

此外,您還需要將以下信息添加到您的chutzpah.json文件:

"CustomTestHarnessPath": "CustomTestHarness.html", 
"TestHarnessLocationMode": "SettingsFileAdjacent", 
"Tests": [ 
    { "Includes": ["*.js"]} 
] 

如果你把你的HTML頁面,在相同的位置chutzpah.js和你的測試,你還需要添加Tests篩選器,以便不會嘗試將HTML頁作爲測試運行。

+0

對不起,你遇到了一些困難。 Chutzpah已經將這些參考文獻添加了很長時間,這是我聽到的第一個問題。我想這是因爲人們會將他們的代碼包裝在$(function(){})調用中,以確保它在文檔準備好之後發生。那對你有用嗎? 如果不是,我們可以看看改變順序,但我需要確保這不會打破其他人。我最好不要你使用模板,因爲它比較脆弱,但我聽到你對缺乏文檔的反饋。謝謝! –