gpt4 book ai didi

angular - RxJs - Jasmine 弹珠 forkJoin 操作符测试

转载 作者:行者123 更新时间:2023-12-03 16:23:31 28 4
gpt4 key购买 nike

这是 forkJoin 运算符 jasmine 大理石测试:

it('test1', () => {

const a = cold('---a|', { a: 1 });
const b = cold('---b|', { b: 2 });

const observable = forkJoin(
a,
b
);

const expected = cold('---21');
expect(observable).toBeObservable(expected);
});

测试产生以下错误:
Expected $[0].frame = 40 to equal 30.
Expected $[0].notification.value = [ 1, 2 ] to equal '2'.
Expected $[1].frame = 40 to equal 50.
Expected $[1].notification.kind = 'C' to equal 'N'.
Expected $[1].notification.value = undefined to equal '1'.
Expected $[1].notification.hasValue = false to equal true.

谁能告诉我我做错了什么?

最佳答案

第一 ---21将等待三帧,然后发出 '2'然后发出 '1 . Fork join 不是 merge它会发出一次,它会发出 [1, 2] .
字母数字弹珠在发射时前进一帧。所以两者ab将在第 4 帧完成。然后 forkJoin 将解析发射。然后 forkJoin 将立即完成(也在第 4 帧)。
所以你得到的错误:Expected $[0].frame = 40 to equal 30.从 fork-join 发出的第一项是在时间 4(因为 a 和 b 在时间 4 完成)而不是在时间 3。Expected $[0].notification.value = [ 1, 2 ] to equal '2'.发出的值是 [1, 2]而不是 '2'如上所述。

Expected $[1].frame = 40 to equal 50.
Expected $[1].notification.kind = 'C' to equal 'N'.
Expected $[1].notification.value = undefined to equal '1'.
Expected $[1].notification.hasValue = false to equal true.
您正在等待 '1'在时间 5. 它得到一个 complete在时间 4。
所以你可能想要...
const expected = cold('----(a|)', { a: [1, 2] });
expect(observable).toBeObservable(expected);

关于angular - RxJs - Jasmine 弹珠 forkJoin 操作符测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56328243/

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