Объекты тестирования мрамора RxJS с функциями
Я возвращаюсь из наблюдаемого объекта. Одно из его свойств - функция.
После назначения даже пустой функции и выдачи объектаtoBeObservable
ожидание не выполняется из-за неглубокого совпадения.
я использую rxjs-marbles/jest
для тестирования. Вот пример тестового примера:
it('...', marbles(m => {
const source = m.cold('(a|)');
const expected = m.cold('(b|)', { b: {
label: 'A',
action: () => { }
} });
const destination = source.pipe(
map(() => ({
label: 'A',
action: () => { }
}))
);
m.expect(destination).toBeObservable(expected);
}));
Результат такой:
expect(received).toEqual(expected) // deep equality
Expected: [{"frame": 0, "notification": {"error": undefined, "hasValue": true, "kind": "N", "value": {"action": [Function action], "label": "A"}}}, {"frame": 0, "notification": {"error": undefined, "hasValue": false, "kind": "C", "value": undefined}}]
Received: serializes to the same string
Единственное, что мне нужно проверить, это то, action
определяется в объекте. Является ли это возможным?
1 ответ
Оказывается, можно определить expected
как это:
const expected = m.cold('(b|)', { b: {
label: 'A',
action: expect.any(Function)
} });
И результат будет совпадать.
Странная вещь, хотя, кажется, я попробовал это несколько дней назад, и тогда ничего не вышло, но, возможно, я сделал это как-то иначе.