react-testing-library - React 测试库 - 存在/断言最佳实践
问题描述
在测试元素是否存在时,建议始终断言如下:
expect(await screen.findByTestId('spinner')).toBeVisible();
或者仅等待元素是否足够(推荐):
await screen.findByTestId('spinner');
注意:微调器是使用 React Hooks 添加的,这就是我等待它们的原因。
我认为以前版本的 RTL 建议不要在不需要时特别断言,但我现在找不到任何引用。
解决方案
某些测试库查询具有隐含的“期望” getBy
。findBy
发生的情况是,如果找不到元素,它们会抛出错误,所以正如你所说,你可以将它包装在一个期望中,或者只是做一个简单的查询,如果测试通过,这意味着查询没有抛出任何错误。
您可以将显式断言视为您正在检查该特定行中的某些内容的感觉。这样你就可以有更多不同的部分(Arrange、Act、Assert 或“render, do things, expect things”),无论他们期待什么,在每个测试中看起来几乎都是一样的。
queryByRole
测试库倾向于在进行查询时推荐最佳实践,因为它们是出于某种原因而构建的,并且每个查询都可以为您提供更好的结果(例如,您可以使用一个选项测试更多的事情,而name
不是一个简单的queryByName
。但是,这个问题将是一个代码中的“样式”问题,如果您希望所有测试更加统一,他们只能说您可以使用“始终编写期望”选项。
推荐阅读
- xml - ZUGFeRD 在一张发票上多次交货
- websocket - 使用 Rxjs 可观察和观察者重新连接 Angular 5 中的 WebSocket
- android - 当我手动安装了旧版本的 apk 时,Google Play 不显示“更新”功能
- python - 如何在python中断言所有断言失败
- reactjs - 更新嵌套数组中的对象,react-redux
- java - 如何解决recyclerview中按钮的自动点击问题?那是一个错误吗?
- javascript - Fullcalendar 事件属性验收
- linkedin - 如何从我是页面管理员的 LinkedIn 获取组织的帖子
- php - 我如何使用 curl 修复此登录
- python - pyzotero 批量更新字段