13

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

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

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

谢谢。

4

2 回答 2

10

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

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

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

于 2019-03-13T22:07:18.640 回答
7

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

我会说它归结为尽量减少影响。如果您的测试代码按类或 id 查询,其他开发人员更有可能复制粘贴而不是使用 testid,这仅仅是因为您必须将 testid 添加到组件中,正如您所见,这感觉不对。使用 testid 表示“我在这里没有好的选择,我被迫这样做”。

于 2019-03-13T22:05:34.727 回答