Почему mockAxios.post.mockImplementationOnce не возвращает никаких данных - PullRequest
0 голосов
/ 10 мая 2018

Почему mockAxios.post.mockImplementationOnce не возвращает никаких данных? Я хотел бы видеть ошибки.

  it('should show errors when submitting returns a 422 response', () => {
    mockAxios.post.mockImplementationOnce(() =>
      Promise.resolve({
        data: { errors: ['Name is required.', 'Email is required.'] },
        status: 422,
      })
    )

    addStudentForm()
      .find('button.open-modal')
      .simulate('click')
    addStudentForm()
      .find('button.submit')
      .simulate('click')

    expect(addStudentForm().instance().state.showModal).toBe(true)
    console.log(addStudentForm().instance().state)
  })

Это мое состояние, так как оно есть в console.log.

{ showModal: true,
 name: '',
 username: '' }

На внешнем интерфейсе ответ в event.response.data показывает мне, что я хочу увидеть, чего я ожидаю errors :["Name is required.", "Email is required."], но я не могу его высмеивать.

Если вам нужно было увидеть полный контекст: https://github.com/freeCodeCamp/classroom-mode/blob/mock-axio/client/src/test/AddStudentForm.test.js

Достаточно интересно, когда у меня есть ожидание на

await addStudentForm()
  .find('button.submit')
  .simulate('click') 

Ожидаемое (addStudentForm (). Instance (). State.showModal) .toBe (true) возвращает значение false.

1 Ответ

0 голосов
/ 13 мая 2018

Вы, похоже, пропустили done () , и поэтому тест завершается раньше, чем возвращаются проверенные данные:

it('should show errors when submitting returns a 422 response', done // < --HERE ->
=> {
    mockAxios.post.mockImplementationOnce(() => {
      Promise.resolve({
        data: { errors: ['Name is required.', 'Email is required.'] },
        status: 422,
      });

    addStudentForm()
      .find('button.open-modal')
      .simulate('click')
    addStudentForm()
      .find('button.submit')
      .simulate('click')

    expect(addStudentForm().instance().state.showModal).toBe(true)
    console.log(addStudentForm().instance().state);

      done(); // <- HERE ->
    })


  })
...