【发布时间】:2023-03-15 19:05:02
【问题描述】:
我正在使用 useEffect 在我的组件的初始渲染中进行 axios 调用,但是在我返回包含该调用内容的 200 响应后,我无法实际测试我的组件的内容...
Component.jsx
const MyComp = () => {
const [data, setData] = useState(null);
useEffect(() => {
axios.get('/my-url').then(data => setData(data.data));
}, []);
return (
<div>
{ data && <div data-testid="data">{data}</div> }
</div>
);
}
Component.spec.js
test('should render data when loaded', async () => {
mockAxios.onGet("/my-url").reply(200, { data: 'hello' });
rendered = render(<MyComp />);
await waitFor(() => rendered.getByTestId("data"));
expect(rendered.getByTestId("data")).toBeTruthy();
expect(rendered.getByTestId("data").textContent).toBe("hello");
});
此测试运行后,我收到错误:
Unable to find an element by: [data-testid="data"]
【问题讨论】:
-
你在用
react-testing-library吗? -
@slideshowp2 确实是我
标签: javascript reactjs unit-testing axios react-testing-library