我一直在尝试模拟一些在Angular应用中返回可观察值的服务调用,但是我根本无法创建将触发类似catch()
或map()
在我的代码中调用的有效可观察对象。例如:
我的服务:
create(): Observable<any> {
return this.http
.post('/api/stuff', { id: 123 })
.catch(this.handleError)
.map(this.extractData);
}
我的规格:
let authHttpMock = mock(AuthHttp);
when(authHttpMock.post('/api/stuff', { id: 123 })).thenReturn(Observable.create(observer => {
observer.error(new Error('500!'));
}));
const myService = new MyService(instance(authHttpMock));
myService.create({ id: 123 }).subscribe(
result => {
expect(result).toBeTruthy();
}
);
覆盖率分析告诉我该handleError
方法从未执行过。在成功观察到的情况下,它也不会通过该extractData
方法。
那可观察到的地方在哪里?我如何返回适当的可观察值以测试此类调用?
在您的测试代码中,我相信您需要以下代码:
AuthHttp.post('/api/stuff', {id : 123 }).subscribe(data => {});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句