用于反应测试的酶、ReactTestUtils和反应测试库有什么区别?
ReactTestUtils文档说:
ReactTestUtils使在您选择的测试框架中测试反应组件变得容易。
酶的文件只是说:
酶是一种用于React的JavaScript测试工具,它使断言、操作和遍历反应组件的输出变得更容易。
反应-测试-库文件:
反应测试库是一个非常轻的解决方案,用于测试反应元件.它提供了轻的实用功能之上的反应-多玛。
为什么每一种解决方案实际上都比较容易,而另一种解决方案却无法实现?
发布于 2019-01-11 19:28:38
ReactTestUtils为您提供了测试React组件的最小值。我还没有看到它被用于大型应用程序。
酶和反应测试库都是很好的库,它们为您提供了测试应用程序所需的所有工具。不过,他们有两种不同的哲学。
酶允许您访问您的组件的内部工作。您可以读取和设置状态,还可以模拟子程序以使测试运行得更快。
另一方面,react测试库不允许您访问任何实现细节。它呈现组件并提供与它们交互的实用方法。其想法是,您应该与您的应用程序的通信方式与用户一样。因此,与其设置组件的状态,不如重现用户为达到该状态所做的操作。
根据我的经验,酶更容易掌握,但从长远来看,它很难维持。react tests库迫使您编写的测试平均起来要复杂一些,但它会给您更高的代码信心。
发布于 2019-01-11 19:38:50
酶用于单元/集成测试。它的API被设计用来测试实现。它提供了自定义呈现器,它不需要DOM (对于浅呈现),行为与React呈现器不同,并且允许一些对单元测试很重要但与默认呈现器不可能或不直接的东西,例如同步状态更新、浅呈现、禁用生命周期方法等。
react-testing-library用于黑箱集成/e2e测试。它在内部使用React呈现器和ReactTestUtils,需要真正的DOM,因为它是在测试中断言的组件输出,而不是内部输出。它不提供隔离单元测试的工具,但可以通过模拟模块来实现这一点,这些模块包含需要通过其他方式(特别是jest.mock
)监视、模拟或篡改的组件。
react-dom/test-utils和react-test-renderer包含一个功能子集,酶和反应测试库都是建立在它们之上的.API是稀缺的,需要编写样板代码或自定义实用程序函数来进行全面的测试。反应正式推广酶和反应测试库作为更好的替代物.
发布于 2022-05-30 03:48:12
在酶中,我们使用成分的状态和道具来测试成分。这通常意味着测试是脆弱的。假设我们已经为一个组件编写了测试,并且它正在运行。但是,如果有人更改了组件中某个状态的变量名或道具,那么即使组件的功能没有改变,我们的测试也会失败。这种行为表明了测试的脆性。
而在React测试库中,我们从用户的角度测试组件。假设我们想测试一个下拉组件,我们不会根据组件的状态和道具来测试它。相反,我们使用DOM元素来测试它,就像用户如何与它交互一样。
的主要目的是以用户使用组件的方式测试组件,从而增加对测试的信心。用户并不关心幕后会发生什么,他们只会看到输出并与之交互。与其访问组件的内部API或评估它们的状态,不如根据组件输出编写测试,从而获得更大的信心。
在某种程度上,反应测试库比酶得到了更广泛的应用。
https://stackoverflow.com/questions/54152562
复制相似问题