【发布时间】:2016-10-02 11:41:55
【问题描述】:
所以我有一个服务:
@injectable()
export class MyService {
public go() : Observable { /* does not complete returned observable */ }
}
我对其方法的可观察完成进行了测试:
it('should complete', inject([MyService], (s : MyService) => {
s.go()
.timeout(10, 'did not complete')
.subscribe(
undefined,
// if observable failed on timeout, fail test
e => e == 'did not complete' && fail(e)
);
}));
虽然我们预计测试会失败,但它会成功完成,因为在测试完成后调用了失败函数。
通常我们会用jasmine 的done 来解决这个问题,但是假设我想使用angular 的inject 函数,如何实现呢?
编辑:使用 angular 的 async 和 fakeAsync 也没有成功,因为 Observable 的 timeout 试图设置一个间隔,这在这些区域是不允许的。
【问题讨论】: