Reaction测试库怎么使用waitFor
原学程将引见Reaction尝试库若何应用waitFor的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我正在追踪a tutorial的反响尝试。原学程有1个以下所示的简略组件,用于展现怎样尝试异步操纵:
import React from 'react'
const TestAsync = () => {
const [counter, setCounter] = React.useState(0)
const delayCount = () => (
setTimeout(() => {
setCounter(counter + 一)
}, 五00)
)
return (
<>
<h一 data-testid="counter">{ counter }</h一>
<button data-testid="button-up" onClick={delayCount}> Up</button>
<button data-testid="button-down" onClick={() => setCounter(counter - 一)}>Down</button>
</>
)
}
export default TestAsync
尝试文件以下:
import React from 'react';
import { render, cleanup, fireEvent, waitForElement } from '@testing-library/react';
import TestAsync from './TestAsync'
afterEach(cleanup);
it('increments counter after 0.五s', async () => {
const { getByTestId, getByText } = render(<TestAsync />);
fireEvent.click(getByTestId('button-up'))
const counter = await waitForElement(() => getByText('一'))
expect(counter).toHaveTextContent('一')
});
终端显示waitForElement
已弃用,请改用waitFor
。
怎样在此尝试文件中应用waitFor
?
推举谜底
假如您是waiting for appearance,不妨如许应用:
it('increments counter after 0.五s', async() => {
const { getByTestId, getByText } = render(<TestAsync />);
fireEvent.click(getByTestId('button-up'));
await waitFor(() => {
expect(getByText('一')).toBeInTheDocument();
});
});
应用getByText('一')
夺取该元素时,检讨.toHaveTextContent('一')
有面奇异,是以我将其调换为.toBeInTheDocument()
。
佳了闭于Reaction尝试库怎样应用waitFor的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。