我一直在尝试模拟一些在我的Angular应用程序中返回observable的服务调用,但是我根本无法创建一个有效的observable来触发类似catch()
或map()
在我的代码中的调用.例如:
我的服务:
create(): Observable<any> {
return this.http
.post('/api/stuff', { id: 123 })
.catch(this.handleError)
.map(this.extractData);
}
Run Code Online (Sandbox Code Playgroud)
我的规格:
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();
}
);
Run Code Online (Sandbox Code Playgroud)
覆盖率分析告诉我该handleError
方法从未执行过.在成功观察的情况下,它也不会通过该extractData
方法.
那可观察到哪里去了?我如何返回一个适当的可观察量来测试这样的调用?
在你的测试代码中的某个地方我相信你需要有这个代码:
AuthHttp.post('/api/stuff', {id : 123 }).subscribe(data => {});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1869 次 |
最近记录: |