簡體   English   中英

如何在 angular 中為 pipe 和 map 編寫單元測試?

[英]How to write unit tests in angular for pipe and map?

我需要在 angular 中為 pipe 和 map 編寫單元測試。

    public getDataById(Id): Observable<Data[]> {
    const url = "my url";
    return this.authHttpService.get(url, null, this.scope)
      .pipe(
        map(response => {
          this.data= List<Data>(response.body);
          return this.data.toArray();
        })
      );
  }

有人可以幫我嗎?

這里的問題是我們如何測試使用服務的組件,我們在這里使用 pipe 和 map。 首先我們可能需要模擬 authHttpService。 你可以按照這個來了解更多: https://codecraft.tv/courses/angular/unit-testing/mocks-and-spies/

現在,當涉及到單元測試時,我們需要斷言一些東西。 所以你可以檢查 getDataById 是否有你模擬的數據。

我希望這有幫助。 謝謝你。

首先模擬您的服務以返回模擬數據。 調整您的模擬數據,以便可以使用 pipe 和 map 對其進行處理。

const result = {
  data: [
    {id: 0, name: 'Temp Data 1'},
    {id: 1, name: 'Temp Data 2'},
  ]
};

export class authHttpServiceMock{
  constructor() {
  }

  get() {
    return Observable.of(result);
  }

}

第二步在規范文件中調用您的 getDataById(Id) 方法。

由於問題是關於 pipe 和 map 的覆蓋范圍,所以我假設您已經知道如何模擬服務。

第一步:始終模擬您在 map 中返回的內容,在您的情況下,讓我們說response = { status: [] }

第二步:

    httpClientSpy.get.mockReturnValue(of(respone));

第三步:調用方法並訂閱它,並期望 observable 將返回的結果

  instance.getDataById(Id).subscribe((result) => {
    expect(result).toEqual([]);
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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