Как проверить анонимные функции?

У меня есть следующее в эпосе:

mergeMap(result => concat(
  of(fetchDone(result)),
  of(dispatchActions(payload))
))

И действия:

const fetchDone = result => ({ type: "FETCH_DONE", payload: result });

function dispatchActions(payload) {
  return dispatch => {
     dispatch(doStuff(payload));
     ...
  };
}

Проблема в моем тесте с использованием шариков, мне нужно иметь возможность проверить анонимную функцию, потому что dispatchActions считается анонимным Как я могу это сделать?

const values = {
  ...
  b: { type: "FETCH_DONE", payload: expected },
  c: NEEDS TO BE ANONYMOUS
};

...
const output$ = fetchApi(action$, state$);

// This fails due to the anonymous function
expectObservable(output$).toBe('---(bc)--', values);

1 ответ

В качестве обходного пути я делаю:

function dispatchActions(payload) {
  if (payload.callDispatches) {
    return dispatch => {
      dispatch(doStuff(payload));
      ...
    };
  }
  return { type: "SOME_TYPE" };
}

Затем в модульном тесте я просто проверяю против 2-го возврата. И тест if-условия можно просто выполнить в отдельном тесте вне мрамора.

Это не идеально, но решает проблему на данный момент. Там должен быть какой-то способ проверить redux-thunkс помощью шариков, хотя.

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