Как шутить-тестировать редукс-тук с двумя отправками внутри? - PullRequest
0 голосов
/ 01 апреля 2020

Я использую 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));

Я пытался следовать подходу из этого аналогичного вопроса но это не сработало для меня, его действия немного отличаются.

Поэтому я хотел бы знать, есть ли способ справиться с этой первой отправкой внутри моего действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...