Reactjs 反应测试库为什么使用测试id

Reactjs 反应测试库为什么使用测试id,reactjs,react-testing-library,Reactjs,React Testing Library,我正在使用react测试库。文件上说 请注意,将其用作按类或id查询的转义图案填充是一个错误 错误的做法,因为用户无法看到或识别这些属性。使用 如果你必须的话,我会给你一个睾丸 我想知道为什么这是一个糟糕的做法。我不想在代码中乱扔数据testid。我的组件中已经有ID和类名。为什么不建议使用它们 谢谢。问得好。从表面上看,这似乎没有多大意义,因为用户也无法看到或识别睾丸 我得说,归根结底就是要把辐射降到最低程度。如果您的测试代码是按类或id查询的,那么其他开发人员更可能会这样做,而不是使用tes

我正在使用react测试库。文件上说

请注意,将其用作按类或id查询的转义图案填充是一个错误 错误的做法,因为用户无法看到或识别这些属性。使用 如果你必须的话,我会给你一个睾丸

我想知道为什么这是一个糟糕的做法。我不想在代码中乱扔数据testid。我的组件中已经有ID和类名。为什么不建议使用它们


谢谢。

问得好。从表面上看,这似乎没有多大意义,因为用户也无法看到或识别睾丸


我得说,归根结底就是要把辐射降到最低程度。如果您的测试代码是按类或id查询的,那么其他开发人员更可能会这样做,而不是使用testid,这仅仅是因为您必须将testid添加到组件中,正如您所看到的,这是不正确的。使用testid表示“我在这里没有好的选择,我被迫这样做”。

反应测试库主要用于黑盒功能测试。使用特定于实现的选择器可能意味着测试实现,而不是用户可以观察到的行为。使用
数据testid
表明它是明确的,是特意添加的,以使测试更容易,而选择器可能是模糊的,并且在更改实现时会意外更改

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


这也并不意味着,
react测试库
不能用于在独立单元测试中测试实现。它实际上可以,但它缺乏必要的功能,因此与专门为此设计的酶相比,这会产生大量样板代码。

请使用文档链接更新问题。引用缺少上下文。链接到当前版本的文档,其中提到“转义图案填充”的段落: