我正在尝试用RxJS弹珠创建一个简单的测试。
我正在使用摩卡和柴。
我正在实例化一个新的测试调度程序,但我不想使用"testScheduler.createHotObservable方法",因为我想使用我自己的可观察,"Observable.of(4(">
const testScheduler = new TestScheduler(assert.deepEqual.bind(assert));
const expected = "a";
const expectedStateMap = {
a: 4
};
testScheduler.expectObservable(Observable.of(4)).toBe(expected, expectedStateMap);
testScheduler.flush();
这是错误:
AssertionError: expected [ Array(2) ] to deeply equal [ Array(1) ]
+ expected - actual
"notification": {
"error": [undefined]
"hasValue": true
"kind": "N"
- "value": 4
+ "value": "4"
}
}
- {
- "frame": 0
- "notification": {
- "error": [undefined]
- "hasValue": false
- "kind": "C"
- "value": [undefined]
- }
- }
]
at TestScheduler.flush (node_modules/rxjs/src/testing/TestScheduler.ts:135:12)
任何想法出了什么问题?
是的,它不起作用。hot
,cold
可观察创建方法是基于给定的弹珠创建可观察的,并在测试调度器内部setup
。当测试调度器通过flush
执行时,它会迭代所有可观察和刷新。如果提供了自定义可观察量,则测试调度程序不知道这些可观察量的存在,也不会刷新这些可观察量。
这只是当前测试调度器实现的限制 - 除非猴子补丁测试调度器接受自定义可观察,否则它可能无法按预期工作。
你只是忘了完成你的可观察量。
const expected = "a";
const expectedStateMap = {
a: 4
};
可以重构为
const expected = "4|";