簡體   English   中英

Angular 單元測試 window.location.href

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM