簡體   English   中英

如何對Angular HttpClient 204響應進行單元測試?

[英]How do I unit test an Angular HttpClient 204 response?

對於無數據方案,我們的REST服務返回204。 但是我不知道如何測試這種情況。

it('can handle no data', (done) => {
  const testData = service.getDummyData();
  service.dataChanged$.subscribe(
    (data: Data[]) => {
      expect(data).toBeUndefined();
      done();
    }
  );
  service.getData();
  const request: TestRequest = backend.expectOne(MyService.URL);
  request.flush(undefined, { status: 204, statusText: 'No Data' });
});

我嘗試通過:

  • 未定義和錯誤
    • Error: Automatic conversion to JSON is not supported for response type.
  • 空值
    • 響應數據為字符串“ null”

因此,我應該傳遞給flush函數以發送空響應嗎? 我在服務中測試響應(簡化):

this.http.get<Data[]>(MyService.URL)
  .first().subscribe(
    (data: Data[]) => {
      if (data) {
        this.dataChanged$.next(data);
      } else {
        Logger.error(MyService.name, 'getData', 'No data.');
        this.dataChanged$.next(undefined);
      }
    },
    (error: Error) => {
        Logger.error(MyService.name, 'getData', error.message);
      this.dataChanged$.next(undefined);
    }
  );

因此,簡單的答案是將''傳遞給flush():

request.flush('', { status: 204, statusText: 'No Data' });

暫無
暫無

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

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