gpt4 book ai didi

jestjs - Jest RXjs6 Marbles,如何测试现有的 observable

转载 作者:行者123 更新时间:2023-12-04 04:18:22 26 4
gpt4 key购买 nike

我试图弄清楚如何为以下内容构建一个 Jest 单元测试:

我有一堆现有的 observables 和我想在一个项目中测试的主题。所以我已经开始了我认为是一个在 jest 中使用 RXjs 弹珠的简单测试用例:

      const testScheduler = new TestScheduler((actual, expected) => {
expect(actual).toEqual(expected);
});

testScheduler.run(({cold, expectObservable}) => {
const inputSubject = new Subject();
const outputSubject = new Subject();
inputSubject.pipe(map(val => val * 2)).subscribe(outputSubject);

cold('a|', {a:1}).subscribe(inputSubject);

expectObservable(outputSubject).toBe('a|', {a:2});
});
}


虽然此测试确实运行,但它失败了。我无法理解测试运行的输出。我想知道我是否做错了什么,或者我是否误解了一般的事情。或者也许只是对输出的一些解释会有所帮助。
    - Expected
+ Received

@@ -1,16 +1,7 @@
Array [
Object {
- "frame": 0,
- "notification": Notification {
- "error": undefined,
- "hasValue": true,
- "kind": "N",
- "value": 2,
- },
- },
- Object {
"frame": 1,
"notification": Notification {
"error": undefined,
"hasValue": false,
"kind": "C",

...... the code ......

at TestScheduler.assertDeepEqual (common/chat/newMessages/ratifiedSendMessages/twilioRatifiedSendMessages.unit.test.js:27:24)
at node_modules/rxjs/src/internal/testing/TestScheduler.ts:159:14
at Array.filter (<anonymous>)
at TestScheduler.Object.<anonymous>.TestScheduler.flush (node_modules/rxjs/src/internal/testing/TestScheduler.ts:157:39)
at TestScheduler.run (node_modules/rxjs/src/internal/testing/TestScheduler.ts:392:12)
at Object.<anonymous> (common/chat/newMessages/ratifiedSendMessages/twilioRatifiedSendMessages.unit.test.js:30:21)

最佳答案

NVM。看起来我应该使用“热”而不是“冷”。一旦我将“冷”调用改为“热”,它就可以正常工作。虽然如果其他人想解释为什么会这样,我全神贯注。

关于jestjs - Jest RXjs6 Marbles,如何测试现有的 observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60039709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com