Angular 如何对角度HttpClient 204响应进行单元测试?
对于无数据场景,我们的REST服务返回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
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”
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' });