2014-12-04 8 views
8

내 자바 스크립트에 window.location.reload 함수를 만들었습니다.자스민 테스트 모의 window.location.reload

Jasmine에서 테스트하는 동안 재로드 기능을 조롱해야합니다.

grunt jenkins을 실행하면 테스트가 잘됩니다. 하지만 브라우저에서 테스트하는 동안 (mozilla/chrome).

다음은 제 코드입니다.

자바 스크립트 :

window.location.reload(); 

재스민 테스트 :

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

누구도 날이에 도움을 주시겠습니까?

+2

'window.location.reload'는 쓰기 가능한 속성이 아니므로 브라우저는 스파이가 그것을 덮어 쓰게하지 않습니다. 이 문제를 해결하려면 http://stackoverflow.com/questions/8919370/jasmine-mock-window-object를 참조하십시오. – user2943490

답변

5

의견을 공유해 주셔서 감사합니다.

나는 제안 된대로 해결했고 성공했습니다.

윈도우가 브라우저 객체이므로 스파이웨어를 사용할 수 없기 때문에 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'); 
});