2014-12-04 139 views
8

我在javascript中創建了window.location.reload函數。模擬茉莉花測試中的window.location.reload

我需要在茉莉花測試時模擬重載功能,因爲它保持循環。

當我運行grunt jenkins時,測試進行得很順利。但不是在瀏覽器(mozilla/chrome)中測試時。

這是我的代碼片段。

的Javascript:

window.location.reload(); 

茉莉花測試:

spyOn(window.location, 'reload').and.callFake(function(){}); 

任何人都可以請幫我在這?

+2

'window.location.reload'不是可寫屬性,所以瀏覽器不會讓間諜覆蓋它。爲了解決這個問題,請參閱http://stackoverflow.com/questions/8919370/jasmine-mock-window-object – user2943490 2014-12-05 12:14:20

回答

5

感謝您分享您的觀點。

我按照建議做了一項工作,並取得了成功。由於window是一個瀏覽器對象,不能被窺探,所以我只是用JavaScript封裝了這個函數,並在我的測試規範中提到了這個函數。

Javascript代碼:

var function = windowReload(){ 
    window.location.reload(); 
} 

呼叫,其中所需要的功能windowReload()

茉莉花測試:

spyOn(obj, 'windowReload').andCallFake(function(){}); 
-1

你應該總是使用$window代替window

試試這個:

$window = jasmine.createSpy('$window'); 

或只是讓你自己:

$window = {location:{reload:function(){}}}; 
0

你總是可以做到:

beforeAll(() => { 
    window.reload =() => console.log('Mock redirect'); 
}); 

分別爲:

beforeAll(() => { 
    window.onbeforeunload =() => console.log('Mock redirect'); 
    window.open =() => console.log('Mock redirect'); 
});