https://codesandbox.io/p/github/Lir-kulikov/users/main?file=%2Fsrc%2F__tests__%2FApp.test.js&selection=%5B%7B%22endColumn%22%3A22%2C%22endLineNumber%22%3A21%2C%22startColumn%22%3A22%2C%22startLineNumber%22%3A21%7D%5D
在src/tests/App.test.js的codesandbox中,由于在模拟点击(第21行)之后,在状态更新之前触发了screen.getByRole
,因此小测试失败。为了确保您可以在第21行使用await
取消对函数的注解,这将使一切正常工作。如何按照最佳实践正确修复它?
第二个问题:在所有的测试中,即使是通过ok的测试,我也会得到act的错误(你也可以在沙箱中看到)。当我试图将它 Package 到act()
中时,eslint开始咒骂,无论如何也无济于事。我读了很多关于这个主题的文章,但仍然不明白哪里出了问题。
1条答案
按热度按时间cbjzeqam1#
这似乎行得通:
看到它工作here。
但我还是觉得应该有更好的办法。
从技术上讲,
user.keyboard
不返回承诺,因此不需要async/await
。但是当我删除它们时,收到Avoid using side effects within waitFor
警告。11-不再适用于
@testing-library/user-event@^14
,已在react-testing-library/issues/1137中修复,请参见下面的@Lirrr注解。