簡體   English   中英

處理Jasmine測試中的javascript錯誤

[英]Dealing with javascript errors in Jasmine tests

我正在開發一個JavaScript應用程序,該應用程序偵聽window.onerror()並向我和我的團隊正在構建的端點報告。 我正在使用grunt-contrib-jasmine進行單元測試,由於我的測試用例預計會引發錯誤,因此我遇到了問題。

使用幻像運行測試用例時,這會不必要地使我的輸出混亂: http : //cl.ly/image/1n3k3z2g2V2l

在參考錯誤的情況下,我的測試如下所示:

it("should report reference errors", function() {
    spyOn(window.fred, 'sendRequest').andCallFake(function(details) {
        expect(details.type).toEqual('js-error');
        expect(details.message).toBeNonEmptyString();
    });
    runs(function() {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.innerHTML = 'reference_error;';
        document.body.appendChild(script);
    });

    waits(2000);

    runs(function() {
        expect(window.fred.sendRequest).toHaveBeenCalled();
    });
});

我希望能夠處理在代碼中某些時候引發的ReferenceError。 最好的是,這間接發生在document.body.appendChild(script); 如果我在這里使用Jasmine的expect(fn).toThrow(e)看起來可以完成任務,但是測試仍然失敗。 我也嘗試過用try { ... } catch (err) { ... }包圍它,但無濟於事。

我的問題是,有人對如何處理有任何建議嗎?

通常,茉莉花會嘗試捕獲您的規范引發的任何異常,並將這些異常標記為失敗。 但是,由於瀏覽器在嘗試解析腳本標記時會拋出此異常,因此茉莉花不在調用堆棧中。 這就是為什么toThrow不起作用。

另外,只要您的onerror方法返回true ,瀏覽器就不應執行其默認錯誤操作 ,在這種情況下,請登錄到控制台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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