【发布时间】:2020-04-27 17:54:59
【问题描述】:
我正在尝试就一个简单的主题 submitTask$ 致电 .next。
我的管道是这样的:
export const submitTask$ = new Subject();
function epic() {
return submitTask$.pipe(
map(taskId => {
console.log('here');
return Boolean(taskId)
})
)
}
我正在尝试使用 TestScheduler 对此进行测试,但无法弄清楚如何进行。我试过这个:
const testScheduler = new TestScheduler((actual, expected) => {
expect(actual).toStrictEqual(expected);
});
testScheduler.run(({ hot, expectObservable }) => {
const actions$ = hot('-', [() => submitTask$.next(task.id)]);
const output$ = epic();
expectObservable(output$).toBe('0', [true]);
但是它不起作用,我从来没有看到console.log('here')
【问题讨论】:
-
RxJS
Subject是Observable的一种特殊类型。如果没有订阅Observer,则不会评估它的管道。所以我认为测试中的output$需要一个subscribe方法。 (我还没有使用TestScheduler,这就是为什么我确定它是否会改变默认行为。)这是我在没有TestScheduler的情况下在stackblitz 上测试的:stackblitz.com/edit/…