Warning: An update to App inside a test was not wrapped in act(...).
每当我发出 API 请求并更新状态时,我都会不断进入我的测试套件。
我正在使用 react-testing-library。我也尝试使用 ReactDOM 测试工具,得到了相同的结果。我尝试的另一件事是将容器包裹在 中act
,但仍然得到相同的结果。
请注意:我的应用程序有效并且我的测试通过。我只需要知道我做错了什么,或者是否是 react-dom 包中的错误导致该错误出现。模拟控制台错误并将其静音是不好的。
global.fetch = require('jest-fetch-mock');
it('should clear select content item', async () => {
fetch.mockResponseOnce(JSON.stringify({ results: data }));
const { container } = render(<App />);
const content = container.querySelector('.content');
await wait();
expect(content.querySelectorAll('.content--item').length).toBe(2);
});
这是钩子的实现:
const [data, setData] = useState([]);
const [error, setError] = useState('');
const fetchInitData = async () => {
try {
const res = await fetch(API_URL);
const data = await res.json();
if (data.fault) {
setError('Rate limit Exceeded');
} else {
setData(data.results);
}
} catch(e) {
setError(e.message);
}
};
useEffect(() => {
fetchInitData();
}, [isEqual(data)]);