Реагируйте на тестирование мокко props.history
Я пытаюсь протестировать функцию с помощью mocha и nock, но получаю ошибку: не удается прочитать свойство 'data' из undefined в data
Вот мой код
Метод проверки:
export const registerUser = (userData, history) => dispatch => {
axios
.post("/api/v3/user", userData)
.then( res => {
history.push("/login")
return res;
})
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err.response.data
})
);
};
Тестовое задание:
describe('Post registerUser', () => {
beforeEach(() => {
nock('http://localhost')
.post('/api/v3/user', userData )
.reply(200, registerResponseValide);
});
it('Register valide', () => {
const dispatchSpy = sinon.spy();
return registerUser(userData, history)(dispatchSpy)
.then(response => {
//expect an object back
expect(typeof response).to.equal('object');
expect(response.data.id).to.equal(registerResponseValide().id)
})
});
});
Спасибо за вашу помощь
1 ответ
Решение
Проблема с registerUser
в том, что он не возвращает обещание, это усложняет тестирование.
Так должно быть:
export const registerUser = (userData, history) => dispatch => {
return axios...
};
history.push
должен быть заглушкой:
const history = { push: sinon.stub() };
return registerUser(userData, history)(dispatchSpy)...
Затем можно проверить, что он был вызван с правильным аргументом.