【发布时间】:2017-06-30 19:01:50
【问题描述】:
我有如下服务:
createProdCategory( prodcategory: IProdCategory ) {
console.log(prodcategory);
return this.http.post( this.url, prodcategory )
.map( ( response: Response ) => response.json( ) )
.catch( this.handleError );
}
...
handleError( error: any ) {
console.error( error );
return Observable.throw( error.json( ).error || 'Service error' );
}
我想通过 handleError 函数通过 RXJS catch 测试路径。我的规格如下:
it( 'should handle an error on create...', async(() => {
let mockData: ProdCategory = mockDatum[ 2 ];
backend.connections.subscribe((connection) => {
let response: Response = new Response(
new ResponseOptions( { body: JSON.stringify( { error: `${errMsg}` } ), status: 404, statusText: `${errMsg}` } ));
connection.mockRespond( response );
});
expect(
sut.createProdCategory( mockData ).subscribe((resp) => {
fail( 'handleError: expected error...' );
} )
).toThrowError( errMsg );
}));
很遗憾,catch 没有被调用,也没有抛出错误信息。如何强制响应通过捕获。
【问题讨论】: