Я использую response и redux-thunk.
У меня есть это действие здесь, чтобы получить документы из API (мне нужно диспетчеризация, чтобы вызвать ее, чтобы я не хотел ее удалять), а затем сохраните документы в моем магазине со второй отправкой:
export function searchDocuments(search) {
return async (dispatch, getState) => {
const { loggedUser } = getState().userReducer;
let documents = [];
if (search.length > 1) {
documents = await dispatch(apiSearchFiles(search, loggedUser));
}
return dispatch({
type: UPDATE_SEARCH_DOCUMENTS,
payload: documents,
});
};
}
И я пытаюсь проверить это с:
describe('Call searchDocuments correctly', () => {
it('should call the correct type on searchDocuments dispatch', async () => {
const store = mockStore({
userReducer: { loggedUser: { name: 'user1' } },
documentsResults: [],
});
const payload = [{ name: 'doc1' }];
const expectedActions = [{ type: UPDATE_SEARCH_DOCUMENTS, payload }];
return store.dispatch(searchDocuments('searchTerm')).then(() => {
expect(store.getActions()).toEqual(expectedActions);
});
});
});
Но я всегда получал эту ошибку, указывая на эту строку: Ошибка:
Actions must be plain objects. Use custom middleware for async actions
Строка:
documents = await dispatch(gDriveSearchFiles(search, loggedUser));
Я пытался следовать подходу из этого аналогичного вопроса но это не сработало для меня, его действия немного отличаются.
Поэтому я хотел бы знать, есть ли способ справиться с этой первой отправкой внутри моего действия.