Как проверить правильность обновления состояния в асинхронном вызове компонента componentDidMount axios? - PullRequest
0 голосов
/ 23 мая 2019

У меня следующий жизненный цикл с async / await

async componentDidMount() {
    try {
      const { name, key, expiration } = await DataService.getdata();
      this.setState({
        key,
        expiration,
        name,
      });
    } catch (err) {
      console.log(err);
    }
  }

Я написал следующий тест для проверки состояния, обновленного правильно, когда данные поступают из вызова await:

jest.mock("axios");

test('correct state update', () => {
      const responseText = {
        name: "test name",
        key: "test_key",
        expiration: null,
      };
      axios.get.mockResolvedValueOnce(responseText);
      const wrapper = shallow(<ComponentWrapper />);

      setImmediate(() => {
        expect(wrapper.state().name).toBe('test name');
        done();
      });
    });

Но у меня естьошибка при выполнении теста:

      throw error;
      ^

Error: expect(received).toBe(expected) // Object.is equality

Expected: "test name"
Received: undefined

Также тест никогда не заканчивается, он продолжает выполняться

Если я удаляю этот тест и просто запускаю тест для правильного рендеринга, у меня появляется следующая ошибка:

TypeError: Cannot read property 'get' of undefined
 at Function.get (DataService.js:10:32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...