rxjs - 主题的TestScheduler
问题描述
我想.next
谈一个简单的话题submitTask$
。
我的管道是这样的:
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')
解决方案
在我看来,你没有订阅actions$
。另外,我不确定[() => submitTask$.next(task.id)]
会做任何事情。
你可以试试这个:
testScheduler.run(({ /* ... */ }) => {
const s = new Subject();
const src = hot(' --a', { a: 1 /* task.id */ });
const expectedSrc = '--1';
const epicObs = cold('-s').pipe(mergeMapTo(epic())); // Subscribe to the subject, before the value is emitted
const expectedEpic = '--v';
const epicValues = { v: true };
expectObservable(src.pipe(tap(id => s.next(id)))).toBe(expectedSrc);
expectObservable(epicObs).toBe(expectedEpic, epicValues);
});
推荐阅读
- javascript - 我如何构造 Js 对象
- php - 如何从 Ajax 获取值到 php
- vb.net - 仅用现有字符串的一部分查找和替换文本字符串
- java - 在jsp(Spring MVC)中按下后退按钮后如何保持注销?
- html - 如何在保持其他列固定的同时使一列可滚动?
- asp.net-core - ASP.NET Core:根据需要标记 [FromQuery] 参数
- hyperledger-fabric - 具有证书透明度的 Hyperledger Fabric 证书验证
- gitlab - Gitlab私有令牌自动滚动
- sql - MS Access SQL - 使用另一个表中的计数更新一个表中的字段
- python - 行间的 DeepDiff