首页 > 解决方案 > React 测试库 - 存在/断言最佳实践

问题描述

在测试元素是否存在时,建议始终断言如下:

expect(await screen.findByTestId('spinner')).toBeVisible();

或者仅等待元素是否足够(推荐):

await screen.findByTestId('spinner');

注意:微调器是使用 React Hooks 添加的,这就是我等待它们的原因。

我认为以前版本的 RTL 建议不要在不需要时特别断言,但我现在找不到任何引用。

标签: react-testing-library

解决方案


某些测试库查询具有隐含的“期望” getByfindBy发生的情况是,如果找不到元素,它们会抛出错误,所以正如你所说,你可以将它包装在一个期望中,或者只是做一个简单的查询,如果测试通过,这意味着查询没有抛出任何错误。

您可以将显式断言视为您正在检查该特定行中的某些内容的感觉。这样你就可以有更多不同的部分(Arrange、Act、Assert 或“render, do things, expect things”),无论他们期待什么,在每个测试中看起来几乎都是一样的。

queryByRole测试库倾向于在进行查询时推荐最佳实践,因为它们是出于某种原因而构建的,并且每个查询都可以为您提供更好的结果(例如,您可以使用一个选项测试更多的事情,而name不是一个简单的queryByName。但是,这个问题将是一个代码中的“样式”问题,如果您希望所有测试更加统一,他们只能说您可以使用“始终编写期望”选项。


推荐阅读