我正在尝试为React-Redux应用程序设置测试。包括Redux文档在内的大多数资源,以及react-testing-library的主要贡献者,都认为应该将重点放在集成测试上,并且应该尽可能地将Redux代码视为实现细节。这很酷,但我在实践中很难做到这一点。
我在集成测试中发现的大多数例子都设置了一个组件,您可以在直接单元中观察到效果。但是在我的应用程序的几个地方,我有组件发送调度到我的商店,导致在应用程序的另一部分重新渲染。为了说明我的问题,我在下面做了一个简化的组件树,我想点击AddToListButton
,导致Element1
被添加到List
。
如果Redux是一个实现细节,我如何测试点击按钮导致更新而不渲染(或多或少)整个应用程序?我知道如何进行单元测试和端到端测试,但不确定如何实现集成测试。
<App>
<Search>
<SearchResult>
<Element1>
<AddToListButton /> //I WANT TO TEST THIS BUTTON
</Element1>
<Element2>
<AddToListButton />
</Element2>
</SearchResult>
</Search>
<List>
<Element1 /> // WHEN THE BUTTON IS PRESSED THE ELEMENT SHOULD GO HERE
</List>
</App>
你实际上会渲染(或多或少)整个应用程序-或者至少所有涉及的组件。这就是集成测试的意义所在。
端到端测试的唯一区别是不涉及其他服务,你可以也集成测试你的应用程序的部分,但这并不意味着你必须集成测试你的应用程序的部分。