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