【发布时间】:2020-10-04 15:49:23
【问题描述】:
我有以下组件:
function MyComp(props) {
const [items, setItems] = useState([]);
useEffect(() => { loadItems(); }, []);
async function loadItems() {
const result = await axios.get(`https://example.com/api`);
setItems(result.data);
}
return (<div>{items.map(item => ...)}</div>);
}
这个测试会产生行为警告:
const items = { "data": [{"id": 1, "title": "Title1"}] };
axios.get.mockImplementationOnce(() => Promise.resolve(items));
const wrapper = mount(<MyComp />);
警告:测试中对 MyComp 的更新未包含在 act(...) 中。
据我了解,这是因为第二次更新获取的项目。如何解决这个问题?
编辑:这有帮助
let wrapper = null;
await act(async () => {
wrapper = mount(<MyComp />);
});
【问题讨论】: