Это мое действие Redux asyn c для входа пользователя
export const loginUser = (userData, history) => (dispatch) => {
dispatch({ type: LOADING_UI });
return axios
.post('/login', userData)
.then((res) => {
setAuthorizationHeader(res.data.token);
dispatch(getUserData());
dispatch({ type: CLEAR_ERRORS });
history.push('/');
})
.catch((err) => {
dispatch({
type: SET_ERRORS,
payload: err.response.data
});
});
};
export const getUserData = () => (dispatch) => {
dispatch({ type: LOADING_USER });
// send get request, if response exist, then dispatch SET_USER action
return axios
.get('/user')
.then((res) => {
dispatch({
type: SET_USER,
payload: res.data
});
})
.catch((err) => console.log(err));
};
Я тестирую, что при вызове loginUser
он отправляет LOADING_UI
вместе с LOADING_USER
и SET_USER
с ожидаемой полезной нагрузкой, затем CLEAR_ERRORS
describe('dataActions', () => {
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
beforeEach(() => {
moxios.install();
});
it('should dispatch an action to login a user', () => {
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200
});
});
const expectedActions = [
{ type: LOADING_UI },
{ type: LOADING_USER },
{ type: SET_USER },
{ type: CLEAR_ERRORS }
]
const store = mockStore({ userData: {}, history: {} })
return store.dispatch(loginUser()).then(() => {
expect(store.getActions()).toEqual(expectedActions);
});
})
afterEach(() => {
moxios.uninstall();
})
})
Однако я получаю TypeError: (0 , _dataActions.loginUser) is not a function
. Ошибка указывает на эту строку кода return store.dispatch(loginUser()).then(() => {
. Я не знаком с этой ошибкой, поэтому приветствую любую помощь.
Кроме того, это предлагаемый logi c для проверки действия входа пользователя? Или мне вообще нужно проверить что-то другое? Спасибо.