3
我需要一些幫助理解QUnit內部。 我不時讀到它的源碼,但是當談到異步測試時,我還在寫奇怪的測試。 我理解異步測試的概念,以及stop()和start()方法(以及爲什麼需要它們),但是當我將它們與setup和teardown結合使用時,我會遇到很多困難的情況。QUnit異步測試與安裝和拆解
這裏是我的Testcode:
use(['Psc.Exception','Psc.Code'], function() {
module("async", {
setup: function() {
console.log('setup');
}, teardown: function() {
console.log('teardown');
}
});
asyncTest("test1", function() {
expect(0);
console.log('test1');
start();
});
asyncTest("test2", function() {
expect(0);
console.log('test2');
start();
});
asyncTest("test3", function() {
expect(0);
console.log('test3');
start();
});
asyncTest("test4", function() {
expect(0);
console.log('test4');
start();
});
asyncTest("test5", function() {
expect(0);
console.log('test5');
start();
});
});
Allthough這些asynchron測試,我想我會得到這樣的事情在控制檯:
setup
test1
teardown
setup
test2
teardown
setup
test3
teardown
...
,因爲我認爲qunit會叫的安裝和拆卸在測試身體周圍?
但我把所有的事情混在一起,從請求到請求以另一種方式混洗。
setup
test1
teardown
setup
setup
setup
setup
test5
teardown
test4
teardown
test3
teardown
test2
teardown
有人能夠一步一步解釋嗎?
沒問題,所以我停止瞭解這個問題。我剛來到解決方案,如果這樣從qunit調用這個設置函數是沒用的。因爲「全局」測試變量將始終被覆蓋。所以我開始把我的設置功能包括進測試本身,這很好用 –
Max Cantor認爲你可能在QUnit中發現了一個錯誤。你可以在GitHub上找到他的錯誤報告並解決這個問題:https://github.com/jquery/qunit/pull/320 –
用'asyncTest'函數設置/拆卸仍然有些bug。即使是「修復」。在我的測試中,它似乎更好,但它最終打嗝並連續進行多次調用。也許,如果我調試了qunit代碼,我會更好地理解這個問題,但我覺得我不應該這樣做。相反,正如@ P.scheit提到的那樣,我認爲我會在模塊化設置/拆解中發現我的依賴關係。可能完全... –