首页 > 解决方案 > react-testing-library 为什么使用测试ID

问题描述

我正在使用反应测试库。在文件中它说

请注意,将其用作按类或 id 查询的逃生舱口是一种不好的做法,因为用户无法看到或识别这些属性。如果必须,请使用 testid。

我想知道为什么这是一个不好的做法。我不想用 data-testid 乱扔我的代码。我的组件中已经有 ids 和 classNames。为什么不建议使用它们?

谢谢。

标签: reactjsreact-testing-library

解决方案


react-testing-library主要用于黑盒功能测试。使用特定于实现的选择器可能意味着测试测试实现而不是用户可以观察到的行为。虽然使用data-testid指定它是明确的并且是故意添加以使测试更容易,而选择器可能是不明确的并且在更改实现时会意外更改。

这并不意味着如果常规选择器已经达到目的,则不应使用它们,只要开发人员不使用它们来测试功能测试中的实现即可。

这也不意味着它react-testing-library不能用于在独立的单元测试中测试实现。它实际上可以,但它缺乏必要的功能,因此与为此设计的 Enzyme 相比,这会导致大量样板代码。


推荐阅读