我有一个使用从服务器获取数据的钩子的组件,并且我已经模拟了该钩子以返回我的测试数据。现在如果mutate
调用函数(由钩子返回),正常的实现会再次获取数据并导致重新渲染(我正在使用swr
,这里是mutate
参考)。
如何在模拟setState
钩子上触发重新渲染/?
我要测试的内容:简单地说,如果用户创建了一个项目,则应该重新获取并显示项目列表。
说明问题的代码:
const existing = [...]
const newlyCreated = [...];
useData.mockReturnValue({ data: [existing] });
const { getByRole, findByText } = render(<MyComponent />);
const form = getByRole("form");
const createButton = within(form).getByText("Create");
useData.mockReturnValue({ data: [existing, newlyCreated] });
// createButton.click();
// Somehow trigger re-render???
for (const { name } of [existing, newlyCreated]) await findByText(name);