[英]Multiple async test jasmine
從上周開始,我遇到了茉莉花測試的問題。 我從哪里發現了該錯誤,但我不知道如何解決它。
這里的代碼:
it("Test the time of asynchronous call", function(done) {
var isItDone = false;
model.setSuccessFnc(function(isItDone) {
isItDone = true;
expect(isItDone).toBe(true);
done();
});
model.setId("serviceLevel");
model.getDataFromBatch("srService", "workItems", query.services, null, filter, null, true);
setTimeout(function() {
expect(isItDone).toBe(true);
done();
}, 4000);
});
it("Test retrieved data of asynchronous call", function(done) {
// var isItDone = false;
model.setSuccessFnc(function(oData, oResponse) {
var json = JSON.parse(oData.__batchResponses[0].body);
expect(json.d.results.length).toBeGreaterThan(0);
done();
});
model.setId("serviceLevel");
model.getDataFromBatch("srService", "workItems", query.services, null, filter, null, true);
});
如果我評論第一個測試,那么我的第二個測試就可以了,否則我將出現以下錯誤:
預期假為真。
對我來說,第二項測試使用第一個“完成”。 我該如何重置?
PS:對不起,我的英語不是我的母語。
謝謝你的幫助。
幾點注意事項:
測試中的setTimeout不是通常的情況,茉莉花具有自己的超時,並且期望超時是重復的。
如果使用真正的后端或某種模擬,則from sample顯然不是。 使用$ httpBackend進行模擬響應,您的測試將更快。
第一次測試包含錯誤。 回調setSuccessFnc具有參數isItDone-它實際上是在測試開始時“覆蓋” var isItDone
定義的局部變量。
如果調用了回調,則將回調中的局部isItDone設置為true,並滿足回調中的期望。
但是超時聲明中的第二個斷言與var isItDone
一起使用仍然是錯誤的。
結果取決於較早發生的情況。
這應該有幫助
model.setSuccessFnc(function() {
isItDone = true;
expect(isItDone).toBe(true);
done();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.