- 我知道https://redux.js.org/usage/writing-tests上的Redux文档。我的设置函数用
<Provider>
Package 了每个渲染组件,因此它可以访问商店。 - 我知道React测试库测试集成行为而不是实现的哲学。
我有一个应用程序,其中2个不同的,深度嵌套的组件通过Redux相互交互。Component A
有一组按钮,当按下按钮时,Component B
会改变其视图。
我有两种方法来测试它。
隔离
1.渲染组件A
1.测试它是否正确分派操作。
1.渲染组件B
1.在测试中分派相同的操作
1.检查组件是否正确响应派单。
集成
1.渲染整个应用程序
1.模拟组件A上的咔哒声
1.检查组件B是否正确React,而无需手动调用任何Redux函数。
我觉得集成的方法符合RTL的哲学。但我不能接受这样一个事实,即我需要渲染整个应用程序来测试与确切组件相关的功能。我甚至不知道在哪里放置这样的测试。
应该是ComponentB.test.tsx
还是App.test.tsx
,因为我正在渲染整个应用程序?
如果我有很多这样的测试,App.test.tsx
会很混乱,或者我应该把它放在ComponentB.test.tsx
里面,但是在测试里面呈现App
组件?
或者我应该接受这样一个事实,即当测试与Redux相关时,我正在测试实现?
任何想法都很感激。谢谢。
1条答案
按热度按时间w46czmvw1#
React测试库适合单元测试和集成测试。在你的情况下,你应该在以下代码中编写2个测试:
utils/renderWithProvider.ts
ComponentA.test.tsx
...
整个应用程序的测试是e2 e测试的一项任务。