我正在使用react-testing-library。在文件中说
请注意,将其用作逃生舱口以按类或id查询是 不好的做法,因为用户无法看到或识别这些属性。采用 如果需要的话,一个testid。
我想知道为什么这是一个不好的做法。我不想用data-testid乱丢我的代码。我的组件中已经有ID和className。为什么不建议使用它们?
谢谢。
答案 0 :(得分:3)
好问题。从表面上看,这似乎没有多大意义,因为用户也无法看到或识别出睾丸。
我会说这归结为最小化辐射。如果您的测试代码是按类或ID查询的,则其他开发人员比他们使用testid的可能性要高得多,这仅仅是因为您必须向组件中添加testid,如您所见,这种感觉并不正确。使用testid表示“我在这里没有很好的选择,我被迫这样做”。
答案 1 :(得分:1)
react-testing-library
主要用于黑盒功能测试。使用特定于实现的选择器可能意味着测试将测试实现,而不是用户可能观察到的行为。尽管使用data-testid
表示它是明确的并且是故意添加的,以使测试更容易,但是选择器可能是模棱两可的,并且在更改实现时会意外更改。
这并不意味着只要选择器已经达到目的,就不应该使用常规选择器,只要开发人员不使用它们来测试功能测试中的实现。
这也不意味着react-testing-library
不能用于隔离单元测试中的实现。它实际上可以,但是它缺少必要的功能,因此与为此目的设计的酶相比,这会导致很多样板代码。