React 测试库 - 存在/断言最佳实践

React Testing Library - existence / assertion best practice

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

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

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

await screen.findByTestId('spinner');

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

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

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

您可以将显式断言视为您正在检查特定行中的某些内容的感觉。这样你就可以有更多不同的部分(安排、行动、断言或“渲染、做事、期待事情”),无论他们期待什么,它们在每个测试中看起来几乎相同。

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