Как проверить анонимные функции?
У меня есть следующее в эпосе:
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
с помощью шариков, хотя.