react-testing-library为什么使用test id

kla*_*abe 5 reactjs react-testing-library

我正在使用react-testing-library。在文件中说

请注意,将其用作通过类或ID查询的转义填充是一种不好的做法,因为用户无法看到或识别这些属性。如果需要,请使用一个testid。

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

谢谢。

Est*_*ask 8

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

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

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


lec*_*tor 5

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

我会说这归结为最小化辐射。如果您的测试代码是按类或ID查询的,则其他开发人员比他们使用testid的可能性要高得多,这仅仅是因为您必须向组件中添加testid,而您所看到的感觉并不正确。使用testid表示“我在这里没有好的选择,我被迫这样做”。