2011-12-05 58 views
7

我有以下成立QUnit:QUnit與夾具奇怪的行爲,測試交替失敗並傳遞

/* Dozen or so previous tests here */ 

test("Test some markup generation", function() { 

    $('#qunit-fixture').plugin(); // jQuery plugin: Generates a table 

    var rows = $('#qunit-fixture table tbody tr'); 
    count = rows.length; // Count the rows 
    console.log(count); 

    equal(count, "96", "Expect the number of rows to be 96"); 
}); 

當它運行時,或當我刷新瀏覽器,它交替地將失敗這個試驗表示計數= 0,或通過這個並且通過了以前的所有測試。在測試之外沒有定義全局變量。如果我把手數設置爲96,那麼一切都很順利,或者如果我取消了這個測試,或者所有以前的測試,所有的測試都會通過。我想知道是否有人遇到過這種行爲?我已經使用了QUnit,並且之前沒有遇到過這個問題。

+2

,我不知道這可能是原因,但它在這裏將計數聲明爲局部變量至少是更清潔的。也許它與qunit使用的其他變量衝突。 –

+0

查看源代碼,它使用'count'的很多引用,並檢查是否可能發生衝突:http://code.jquery.com/jquery-1.7.1.js –

+0

還有一個'功能'可讓您單擊測試報告中的一個測試,以僅選擇該測試進行運行。花了我半小時才發現爲什麼它看起來像我只有一個測試;-) –

回答

8

好的,我想出了這個問題,它與使用他們提供的夾具元素有關。該QUnit文檔指出:

的#qunit夾具元件可用於提供和操縱試驗標記,會自動在每次試驗後重新

通過重置他們的意思它將是「清空」,沒有任何其他屬性可以重置。看看我的問題,您可以看到我直接將插件應用於燈具,並且所有添加的屬性都在進行下一次測試時引起這些問題。

每次測試之前我現在插入一個新元素到夾具和目標,與插件:

$('#qunit-fixture').append('<div id="target"></div>'); 
$('#target').plugin(); 

這添加的元素,然後得到每個測試之後正確清除。雖然這看起來很明顯,但從文檔中我並不清楚這一點。

UPDATE:

更改提交併被拉入QUnit上14/2/2012:https://github.com/jquery/qunit/pull/195

謝謝,喬恩

+1

更改已提交併且已提交,但於2012年2月29日恢復。所有這一切意味着上述解決方案並不需要將插件和屬性附加到qunit-fixture本身。 – purgatory101