Есть ли альтернатива вызову .update () несколько раз при тестировании методов жизненного цикла компонентов?

В настоящее время я пытаюсь проверить компонент, который сам выполняет запросы и обновления:

class Container extends React.Component {
  async componentDidMount() {
    try {
      await requestFunc();
    } catch (error) {
      this.setState({ error: true });
    }
  }

  render() {
    return <Component {...this.state} />;
  }
}

Это мой тест:

test('flags an error if requestFunc rejects', async () => {
  requestFunc.mockReturnValueOnce(Promise.reject());
  const wrapper = shallow(<Container />);

  await wrapper.update(); // requestFunc rejected
  await wrapper.update(); // state change and new render

  expect(wrapper.props('error')).toBe(true);
});

Чтобы увидеть последний компонент, мне нужно позвонить .update()дважды.

Есть ли лучший способ сделать это?

javascript,reactjs,unit-testing,jestjs,enzyme,

0

Ответов: 0

Есть ли альтернатива вызову .update () несколько раз при тестировании методов жизненного цикла компонентов?

В настоящее время я пытаюсь проверить компонент, который сам выполняет запросы и обновления:

class Container extends React.Component {
  async componentDidMount() {
    try {
      await requestFunc();
    } catch (error) {
      this.setState({ error: true });
    }
  }

  render() {
    return <Component {...this.state} />;
  }
}

Это мой тест:

test('flags an error if requestFunc rejects', async () => {
  requestFunc.mockReturnValueOnce(Promise.reject());
  const wrapper = shallow(<Container />);

  await wrapper.update(); // requestFunc rejected
  await wrapper.update(); // state change and new render

  expect(wrapper.props('error')).toBe(true);
});

Чтобы увидеть последний компонент, мне нужно позвонить .update()дважды.

Есть ли лучший способ сделать это?

00JavaScript, reactjs, блок-тестирование, jestjs, фермент,
Похожие вопросы