Объекты тестирования мрамора 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)
  } });

И результат будет совпадать.

Странная вещь, хотя, кажется, я попробовал это несколько дней назад, и тогда ничего не вышло, но, возможно, я сделал это как-то иначе.

Другие вопросы по тегам