在 rxjs 中设置时间延迟时,"hot" observable 不起作用
The "hot" observable doesn't work when setting time delay in rxjs
我正在用 ngrx 编写一个单元测试以达到效果,当我 运行 热观察测试对管链上的效果有 delay
时,receive
有空值。
const output = loginSuccess(loginResult);
actions$ = hot('^a', { a: action });
const expected = cold('30ms c', { c: output })
expect(effect.login$).toBeObservable(expected);
我的函数是:
login$ = createEffect(() =>
this.actions$.pipe(
ofType(login),
delay(20),
map((payload) => loginSuccess({
data: {
username: payload.credential.username,
age: 18,
name: 'name',
},
}))
)
);
如果我删除 delay
运算符(并更正测试用例中的时间),它工作正常,我做错了什么?
谢谢!
您需要使用测试调度程序。
有关示例,请参阅 NgRx 文档 - https://ngrx.io/guide/effects/testing#effects-with-parameters
effects.search$({
scheduler: getTestScheduler(),
});
我正在用 ngrx 编写一个单元测试以达到效果,当我 运行 热观察测试对管链上的效果有 delay
时,receive
有空值。
const output = loginSuccess(loginResult);
actions$ = hot('^a', { a: action });
const expected = cold('30ms c', { c: output })
expect(effect.login$).toBeObservable(expected);
我的函数是:
login$ = createEffect(() =>
this.actions$.pipe(
ofType(login),
delay(20),
map((payload) => loginSuccess({
data: {
username: payload.credential.username,
age: 18,
name: 'name',
},
}))
)
);
如果我删除 delay
运算符(并更正测试用例中的时间),它工作正常,我做错了什么?
谢谢!
您需要使用测试调度程序。 有关示例,请参阅 NgRx 文档 - https://ngrx.io/guide/effects/testing#effects-with-parameters
effects.search$({
scheduler: getTestScheduler(),
});