My componentDidMount()
запускает вызов асинхронной функции c, но в зависимости от результата этой функции это может не привести к изменению DOM. Можно ли как-нибудь дождаться завершения функции в моих тестах?
Вот пример - кнопка нажатия изначально отключена. Если функция asyn c возвращает true, кнопка щелчка должна быть включена:
myAsyncFunction.mockImplementation(() => true);
const {queryByText} = render(<Component />);
const button = queryByText("Click");
expect(button).toBeDisabled();
await waitFor( () => expect(button).not.toBeDisabled() );
expect(button).not.toBeDisabled();
Но если она возвращает false, кнопка остается отключенной:
myAsyncFunction.mockImplementation(() => false); // async returning different value
const {queryByText} = render(<Component />);
const button = queryByText("Click");
expect(button).toBeDisabled();
await waitFor( () => {} ); // <== **** CODE SMELL ****
expect(button).toBeDisabled();
Второй тест действительно выполняется работа, но пустое waitFor()
считается плохой практикой. Есть ли способ избежать этого?