簡體   English   中英

多個異步測試茉莉花

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM