Мне поручено тестировать наблюдаемые, и я довольно новичок в этой концепции. У меня есть четкое представление о том, как работают Observables, и мне нужно протестировать функцию andCombine
, которая принимает две наблюдаемые и возвращает результат AND.
it('tests andCombine', () => {
const coldOne = cold('t----f|', {t : true, f : false});
const coldTwo = cold('t-f|', {t : true, f : false});
const result = cold('t-f--f|', {t : true, f : false});
const combined = andCombine(coldOne, coldTwo);
expect(combined).toBeObservable(result);
});
AndCombine выглядит как
export const andCombine = (...source$: Observable<any>[]): Observable<any> => {
return combineLatest(source$.filter(data => !!data)).pipe(
map(([...args]: [any[]]) => {
return args.reduce((acc, arg) => {
return acc && !!arg;
}, true);
}),
distinctUntilChanged()
);
};
И у меня есть следующие журналы ошибок.
Error: Expected $.length = 3 to equal 4.
Expected $[2].frame = 60 to equal 50.
Expected $[2].notification.kind = 'C' to equal 'N'.
Expected $[2].notification.value = undefined to equal false.
Expected $[2].notification.hasValue = false to equal true.
Expected $[3] = undefined to equal Object({ frame: 60, notification: Notification({ kind: 'C', value: undefined, error: undefined, hasValue: false }) }).
Я знаю, что чего-то очень не хватает c, и мне бы хотелось, чтобы кто-нибудь помог мне понять, как эта штука работает и где я нахожусь. идет не так