Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何对角度HttpClient 204响应进行单元测试?_Angular_Httpclient_Http Response Codes_No Data_Http Status Code 204 - Fatal编程技术网

Angular 如何对角度HttpClient 204响应进行单元测试?

Angular 如何对角度HttpClient 204响应进行单元测试?,angular,httpclient,http-response-codes,no-data,http-status-code-204,Angular,Httpclient,Http Response Codes,No Data,Http Status Code 204,对于无数据场景,我们的REST服务返回204。但是我不知道如何测试这个场景 it('can handle no data', (done) => { const testData = service.getDummyData(); service.dataChanged$.subscribe( (data: Data[]) => { expect(data).toBeUndefined(); done(); } ); servi

对于无数据场景,我们的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' });
});
我试过传球:

  • 未定义和错误
    • 错误:响应类型不支持自动转换为JSON。
  • 空的
    • 响应数据是字符串“null”
那么,我应该向flush函数传递什么来发送一个空响应呢?我在服务中测试响应(简化):

this.http.get(MyService.URL)
.first()订阅(
(数据:data[])=>{
如果(数据){
this.dataChanged$.next(数据);
}否则{
Logger.error(MyService.name,'getData','No data');
this.dataChanged$.next(未定义);
}
},
(错误:error)=>{
Logger.error(MyService.name,'getData',error.message);
this.dataChanged$.next(未定义);
}
);

因此,简单的答案是,将“”传递给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);
    }
  );
request.flush('', { status: 204, statusText: 'No Data' });