这是我的模拟服务,它写入延迟10ms:
class MockHttp {
post(url, body, option): Observable<Response> {
let resOpt = new ResponseOptions({
body: JSON.stringify({success: true})
});
let res: Response = new Response(resOpt);
return Observable.of(res).delay(10);
}
}
这是我的测试用例。
it('http post should get valid response without any param', fakeAsync(() => {
let retVal = null;
// note this is just blackbox testing. httpHelperSerivce.post() function is wrapper of http.post(p1, p2, p3),
httpHelperService.post('url', {a: 'a'}).subscribe(res => {
console.log(res);
retVal = res;
});
tick();
expect(retVal).toEqual({success: true});
discardPeriodicTasks();
}));
测试不等待延迟。毫不拖延,它有效。
我的代码有什么问题吗? MockHttp
的延迟时间超出当前区域?
答案 0 :(得分:0)
我认为你的测试没有任何问题。
尝试Observable.timer(10).map(()=&gt; res).take(1)而不是Observable.of(res).delay(10)。
我在过去使用rx的.delay()和jasmine.clock()。tick()时遇到了一些问题