Bra*_*ven 4 reactjs jestjs react-dom testing-library
在测试库文档的某些页面上出现了使用 screen.getByText 的示例:
expect(screen.getByText(/you are home/i)).toBeInTheDocument()
Run Code Online (Sandbox Code Playgroud)
我的问题是这与此有何不同:
screen.getByText(/you are home/i)
Run Code Online (Sandbox Code Playgroud)
为什么当 screen.getByText 执行相同操作时文档使用 .toBeInTheDocument() (当“you are home”文本不在文档中时抛出错误)?这不是多余的吗?
这不是必需的,但有些人认为这有助于更清楚地传达意图。
\n来自博客文章React 测试库的常见错误(由原始贡献者 Kent 撰写):
\n\n\n使用
\nget*变体作为断言\n\n重要性:低
\nRun Code Online (Sandbox Code Playgroud)\n// \xe2\x9d\x8c\nscreen.getByRole(\'alert\', {name: /error/i})\n\n// \xe2\x9c\x85\nexpect(screen.getByRole(\'alert\', {name: /error/i})).toBeInTheDocument()\n这实际上并不是什么大不了的事,但我想我应该提到它并发表我的看法。如果
\nget*查询未能成功找到元素,它们会抛出一条非常有用的错误消息,向您显示完整的 DOM 结构(带有语法突出显示),这将在调试过程中为您提供帮助。因此,断言永远不可能失败(因为查询将在断言有机会失败之前抛出)。出于这个原因,很多人都跳过了这个断言。老实说,这确实很好,但我个人通常将断言保留在那里,只是为了向代码读者传达,它不仅仅是重构后悬而未决的旧查询,而是我明确断言它存在。
\n\n\n建议:如果你想断言某事物存在,请明确该断言。
\n
| 归档时间: |
|
| 查看次数: |
1708 次 |
| 最近记录: |