使用mock-store正确测试调用另一个thunk的thunk的过程如下:
- 首先,我们需要安装相关的测试库和工具。在Node.js环境中,可以使用npm或者yarn来安装这些依赖。打开终端并执行以下命令:
- 首先,我们需要安装相关的测试库和工具。在Node.js环境中,可以使用npm或者yarn来安装这些依赖。打开终端并执行以下命令:
- 或者
- 或者
- 这样就安装了redux-mock-store和redux-thunk两个库。
- 在测试文件中,我们需要导入相关的库和模块。假设我们使用的是Jest测试框架,可以在测试文件的顶部添加以下代码:
- 在测试文件中,我们需要导入相关的库和模块。假设我们使用的是Jest测试框架,可以在测试文件的顶部添加以下代码:
- 这里假设我们要测试的两个thunk分别是yourThunk和anotherThunk,它们都定义在名为yourThunks.js的文件中。
- 接下来,我们需要创建一个mock store来模拟Redux的store。在测试文件中添加以下代码:
- 接下来,我们需要创建一个mock store来模拟Redux的store。在测试文件中添加以下代码:
- 这里我们使用configureMockStore函数创建了一个mock store,并将thunk作为middleware传入。然后我们通过调用mockStore函数来创建一个实际的store对象,初始状态为空对象{}。
- 现在我们可以开始测试了。假设我们要测试的是yourThunk中调用了anotherThunk的情况。在测试文件中添加以下代码:
- 现在我们可以开始测试了。假设我们要测试的是yourThunk中调用了anotherThunk的情况。在测试文件中添加以下代码:
- 这里我们使用Jest的describe和it函数来定义测试用例。在测试用例中,我们首先定义了期望的action数组expectedActions,这个数组包含了我们期望在yourThunk中被调用的action。然后我们通过调用store.dispatch来触发yourThunk,并使用then方法来等待异步操作完成。最后,我们使用store.getActions方法获取实际触发的action数组,并使用expect断言来判断实际的action数组是否与期望的一致。
- 最后,我们可以运行测试了。在终端中执行以下命令:
- 最后,我们可以运行测试了。在终端中执行以下命令:
- 或者
- 或者
- 这样就会运行测试并输出结果。
总结:使用mock-store正确测试调用另一个thunk的thunk需要安装相关的测试库和工具,创建一个mock store来模拟Redux的store,定义期望的action数组,并使用store.dispatch来触发thunk并等待异步操作完成,最后使用expect断言来判断实际的action数组是否与期望的一致。