RxJs - Jasmine 弹珠 forkJoin 运算符测试
RxJs - Jasmine marbles forkJoin operator test
这里是 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]
.
字母数字弹珠在发射时前进一帧。因此 a
和 b
都将在第 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.
您期望在时间 5 获得 '1'
。它在时间 4 获得 complete
。
所以你可能想要...
const expected = cold('----(a|)', { a: [1, 2] });
expect(observable).toBeObservable(expected);
这里是 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]
.
字母数字弹珠在发射时前进一帧。因此 a
和 b
都将在第 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.
您期望在时间 5 获得 '1'
。它在时间 4 获得 complete
。
所以你可能想要...
const expected = cold('----(a|)', { a: [1, 2] });
expect(observable).toBeObservable(expected);