Реагируйте на тестирование мокко props.history - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь протестировать функцию с помощью mocha и nock, но получаю сообщение об ошибке: Невозможно прочитать свойство 'data' из undefined at 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 Ответ

0 голосов
/ 26 февраля 2019

Проблема с registerUser в том, что он не возвращает обещание, это усложняет тестирование.

Это должно быть:

export const registerUser = (userData, history) => dispatch => {
  return axios...
};

history.push должно бытьзаглушка:

const history = { push: sinon.stub() };
return registerUser(userData, history)(dispatchSpy)...

Затем можно проверить, что он был вызван с правильным аргументом.

...