【发布时间】:2020-10-14 22:08:56
【问题描述】:
如果我有这样的场景:
it('some observable', /*done*/() => {
const someService = TestBed.get(SomeService);
const subscription = someService.someObservable.subscribe(value => {
expect(value).toEqual('some value');
subscription.unsubscribe();
/*done();*/
});
// This method is supposed to cause the Observable to publish the value to all subscribers.
someService.setValue('some value');
});
如果 Observable 从不发布事件,我怎么能通过测试?这种情况有几个问题。首先,如果 Observable 从未发布事件,则 done() 方法永远不会被调用。另外,如果它不发布事件,我的测试怎么知道?它不会看起来像失败,Jasmine 只会打印测试没有“预期”或类似的东西。
更新:我意识到我不需要 done() 函数,因为我现在在每次测试之前重置 TestBed。但是,如果 Observable 没有触发,测试不会失败,这仍然不能解决问题。
【问题讨论】:
标签: angular jasmine observable