React + Jest - 测试中对 LoginForm 的更新未包含在 act(...) 中
React + Jest - An update to LoginForm inside a test was not wrapped in act(...)
这让我抓狂。在尝试用 act 包装所有内容之后,我真的完全不理解这个问题(这已经感觉很老套,但我不得不尝试)。测试通过了,但是控制台上到处都是关于“act”的错误。
这是原始测试代码。
const setup = () =>
render(
<Provider store={store}>
<LoginForm />
</Provider>
);
jest.mock('@hooks/auth', () => ({
useLogin: jest.fn()
}));
describe('Login form', () => {
it('matches snapshot', () => {
const asFragment = setup();
expect(asFragment()).toMatchSnapshot();
});
});
即使像这样简单的测试也会产生控制台错误“act”。
我敢打赌解决方案很简单,但我很想知道 a) 它是什么以及 b) 为什么它会这样工作
我认为 act
仅用于触发 events/submits 等,因为我之前使用它设法解决了一些控制台错误,但这在上面的示例中不起作用。
非常感谢任何能在这里帮助我的人。这可能很简单,但我把测试留到很晚,这是一个教训。
使其(...)异步并在 fireEvent 和 userEvent 上使用 waitFor。基本上任何触发状态更新的东西
这让我抓狂。在尝试用 act 包装所有内容之后,我真的完全不理解这个问题(这已经感觉很老套,但我不得不尝试)。测试通过了,但是控制台上到处都是关于“act”的错误。
这是原始测试代码。
const setup = () =>
render(
<Provider store={store}>
<LoginForm />
</Provider>
);
jest.mock('@hooks/auth', () => ({
useLogin: jest.fn()
}));
describe('Login form', () => {
it('matches snapshot', () => {
const asFragment = setup();
expect(asFragment()).toMatchSnapshot();
});
});
即使像这样简单的测试也会产生控制台错误“act”。
我敢打赌解决方案很简单,但我很想知道 a) 它是什么以及 b) 为什么它会这样工作
我认为 act
仅用于触发 events/submits 等,因为我之前使用它设法解决了一些控制台错误,但这在上面的示例中不起作用。
非常感谢任何能在这里帮助我的人。这可能很简单,但我把测试留到很晚,这是一个教训。
使其(...)异步并在 fireEvent 和 userEvent 上使用 waitFor。基本上任何触发状态更新的东西