2014-12-04 19 views
8

javascript'imde window.location.reload işlev oluşturdum.Jasmine testinde sahte pencere.location.reload

Jasmine'de test ederken yeniden yükleme işlevini, döngüde kaldığı için alay etmem gerekiyor.

grunt jenkins çalıştırdığımda test iyi gider. Ancak tarayıcıda test yaparken (mozilla/chrome).

İşte kod snippet'im.

JavaScript:

window.location.reload(); 

Yasemin Testi:

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

kimse bana bu konuda yardımcı olur musunuz?

+2

'window.location.reload' yazılabilir bir özellik değildir, bu nedenle tarayıcı casusun geçersiz kılmasına izin vermez. Bunu aşmak için bkz. Http://stackoverflow.com/questions/8919370/jasmine-mock-window-object – user2943490

cevap

5

Görüşlerinizi paylaştığınız için teşekkür ederiz.

Önerildiği gibi bir iş yaptım ve başarılı oldu.

Pencere bir tarayıcı nesnesi olduğundan ve üzerine gizlenemediğinden, işlevi yalnızca JavaScript'e sardım ve bu özelliğimi test özelliklerinde belirtdim.

Javascript kodu:

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

çağrı gerekli fonksiyon windowReload().

Yasemin Testi:

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

Hep $window yerine window kullanmalıdır.

bu deneyin:

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

ya da sadece kendi yapmak:

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

Hep yapabilirsiniz:

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

Sırasıyla:

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