[英]Angular unit testing window.location.href
login() {
const endPoint = environment.myEndPoint;
window.location.href = endPoint + '/myPath/login';
}
我有 Angular 服務文件,上面寫着上面的代碼來重定向到登錄 URL。 現在,我已經在規范文件中編寫了以下代碼來對其進行單元測試。
it('should call login method',() => {
service.digitalssologin();
});
這個測試用例有時會覆蓋登錄方法並成功執行,有時它會失敗並且karma工具斷開連接,因此其他測試用例也停止執行。 有沒有其他方法可以為這種方法編寫測試用例?
提前致謝。
您需要模擬window
對象進行單元測試,否則就像您說的那樣,您將面臨這個問題。
你需要做一些像這樣在項目AppModule
。
然后在您的服務中,在您的構造函數中注入窗口服務。
constructor(@Inject('Window') window: Window) {}
login() {
const endPoint = environmment.myEndpoint;
this.window.location.href = endpoint + '/myPath/login';
}
// mock the window object
let mockWindow = { location: { href: '' } };
TestBed.configureTestingModule({
...
providers: [
// provide the mock for 'Window' injection token.
{ provide: 'Window', useValue: mockWindow }
]
...
});
一旦你模擬了 window 對象,你就不應該面臨測試隨機失敗的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.