【发布时间】:2021-02-23 11:28:46
【问题描述】:
在一种情况下,我有一个返回 EMPTY Observable 的效果。我正在尝试测试这种情况,但我似乎无法弄清楚如何测试EMPTY Observable?
我的代码如下:
效果:
effect$ = createEffect(() =>
this.actions$.pipe(
ofType(someAction),
mergeMap(([action]) => {
if (someCondition) {
return EMPTY <-- this is what I am trying to test
}
return someServiceCall.pipe(
map((offers) => //dispatch some action,
catchError((error: string) => // dispatch another action),
)
}),
),
)
这是我的单元测试尝试,但失败了
Error: Timeout - Async function did not complete within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL).
考虑到条件在测试中已经满足:
it('should return EMPTY when ...', (done) => {
actions$ = of(someAction)
effects.effect$.subscribe((res) => {
expect(res).toEqual(never)
done()
})
})
如果返回是of(null) 而不是EMPTY,我可以让它工作。但我真的很想知道如何测试这个案例。
【问题讨论】:
-
是
EMPTYundefined?expect(res).toBe(undefined)有效吗? -
@AshishRanjan
EMPTY是of(never)。在尝试您的建议时,它也会因Error: Timeout - Async function did not complete within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)而失败 -
我正在阅读关于 EMPTY,NEVER 的内容,因此它们根本不会发出任何东西。 EMPTY 终止并且 NEVER 甚至不终止。这意味着,如果您使用的是 EMPTY,也许您可以检查完整的回调
标签: angular rxjs jasmine karma-jasmine ngrx-effects