2017-06-05 62 views
1

我的angularJS應用程序使用事件蒸發,並保持打開http事件蒸汽請求和偵聽服務器事件。所以我的問題是當量角器開始測試我的angularJS應用程序時,它會一直等待完成事件流請求,因爲我正在使用ignoreSynchronization = false,因此量角器一直等待,直到它獲取超時,因爲事件流http請求永遠不會結束。所以我想教我的量角器忽略這樣的事件流$ http任務並繼續測試我的應用程序。 這些事件流在我的應用程序中實現,因此每次有事件流請求時量角器都會超時。如何讓量角器忽略特定的異步Angular任務?

我在超時時收到以下錯誤: 失敗:超時等待異步Angular任務在300秒後完成。這可能是因爲當前頁面不是Angular應用程序。請參閱常見問題了解更多詳情:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular。 以下任務正在處理中: - $ http:https://example.com/custom/xxx/sse

任何人都可以請幫我擺脫這個問題嗎?

回答

0

感謝@quirimmo爲您的寶貴迴應。

我們可以在不使用模擬後端調用的情況下通過簡單修改http請求並將超時設置爲http請求來實現超時問題,以便量角器等待請求超時(我們已經設置超時將關閉長時間運行的http請求)並執行進一步聲明。

2

在量角器中,您可以添加模擬。 所以實際上你可以做的是添加幾個模擬模塊來模擬你需要的任何東西。

如果問題僅與異步請求計時的超時有關,還可以從protractor.config.js更改該超時值,將其增加。

順便說一句,回到嘲笑,你定義嘲笑,並通過browser.addMockModule方法將它們添加到量角器。

這裏大約嘲笑一個很好的文章在量角器:

http://eitanp461.blogspot.ie/2014/01/advanced-protractor-features.html

在這裏,爲了方便您嘲諷angularjs $ HTTP請求良好的NPM模塊:

https://github.com/atecarlos/protractor-http-mock

這可能成爲模擬模塊的一個小示例,不需要使用上面的節點模塊:

browser.addMockModule('httpMocker', function() { 
    angular.module('httpMocker', ['ngMockE2E']) 
    .run(function($httpBackend) { 
    $httpBackend.whenGET('MYURL') 
    .respond("MOCKED RESPONSE!"); 
    }) 
}) 

你也可以在測試中直接定義mocks,但是如果你想在測試中全局使用,我建議你在protractor.config.js內的onPrepare方法中直接定義你的模擬。

我希望它有幫助