簡體   English   中英

如何在 angular 7 中測試這個 Observable 函數

[英]How can I test this Observable function in angular 7

我得到了這個功能,我需要測試,我不知道該怎么做!

public flightStream(prefix: AvaliableHttpPrefix, url: string, headers: any, body?: any): Observable<FlightData[] | FlightData> {
    return timer(GENERAL_CONSTANTS.FLIGHTS_INITIAL_DELAY, GENERAL_CONSTANTS.FLIGHTS_REFRESH_TIME)
      .pipe(
        flatMap(_ => {
          return this.httpHandlerService.request(prefix, url, headers, body)
        }),
        map(response => {
          if (Array.isArray(response)) {
            console.log(response);
            return response as FlightData[]
          }
          return response as FlightData
        })
      )
  }

我試着做這個

it('should call get function and return a list of flights', () => {
    const flightsService: FlightsService = TestBed.get(FlightsService);
    const stream$ = flightsService.flightStream(flightListStreamMock.prefix, flightListStreamMock.URL, flightListStreamMock.headers, flightListStreamMock.filterCriteria);
    stream$.subscribe((result) => {
      expect(result).toBe(FLIGHTS)
    })
  })

但它說Timeout - Async callback was not invoked within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)

您需要考慮使用 fakeAsync。 您的服務正在使用計時器,而 fakeAsync 將讓您使用一個tick()來模擬測試的時間流逝。

暫無
暫無

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

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