JavaScriptでwindow.location.reload
関数を作成しました。
ループし続けるので、Jasmineでのテスト中にリロード機能をモックする必要があります。
grunt jenkins
を実行すると、テストはうまくいきます。ただし、ブラウザ(mozilla/chrome)でのテスト中はそうではありません。
これが私のコードスニペットです。
JavaScript:
window.location.reload();
ジャスミンテスト:
spyOn(window.location, 'reload').and.callFake(function(){});
誰かがこれについて私を助けてくれますか?
ご意見をお寄せいただきありがとうございます。
私は提案されたように回避策を実行し、それは成功しました。
Windowはブラウザオブジェクトであり、スパイできないため、関数をJavaScriptでラップし、テスト仕様でその関数を参照しました。
JavaScriptコード:
_var function = windowReload(){
window.location.reload();
}
_
必要に応じて関数windowReload()
を呼び出します。
ジャスミンテスト:
_spyOn(obj, 'windowReload').andCallFake(function(){});
_
常に$window
の代わりにwindow
。
これを試して:
$window = jasmine.createSpy('$window');
または自分で作る:
$window = {location:{reload:function(){}}};
私は同じ問題に会います。 window.location = ''は、ブラウザーで実行中にinfループを引き起こします。簡単な解決策は、再読み込みを停止するためにwindow.location = '#'を設定することです。
これは私とBeforeEachのJamineでうまくいきました
delete window.location;
window.location = Object.create(window);
window.location.reload = () => {};
spyOn(window.location, 'reload');
そしてこれはジェストを使って働いた
delete window.location;
window.location = Object.create(window);
window.location.reload = jest.fn();