You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用redux-saga-test-plan测试all effect出现effect不匹配如何解决?

问题原因

  • 你的testSaga断言中给.all()传入的是对象结构,但原generator函数里yield all的参数是数组结构,二者结构不匹配,所以触发effect不匹配的报错。
  • 你注释中保留的原生断言写法是正确的,用的就是和原代码一致的数组结构,所以可以正常运行。

解决方法

修正测试用例中.all()的入参结构,和原saga代码保持一致即可,完整修正后的测试代码如下:

import {expectSaga, testSaga} from 'redux-saga-test-plan';
import gatawayFlow, {getGatewaysFlow, selectGatewayFlow} from '../logic/sagas';
import * as actionTypes from '../logic/actionTypes';
import {takeEvery, takeLatest} from '@redux-saga/core/effects';

// 单元测试
describe('Unit tests', () => {
  test('Test all effect', () => {
    const saga = testSaga(gatawayFlow);
    saga
        .next()
        .all([
          takeEvery(actionTypes.GET_GATEWAYS_REQUEST, getGatewaysFlow),
          takeLatest(actionTypes.SELECT_GATEWAY_REQUEST, selectGatewayFlow)
        ])
        .next()
        .isDone();
  });
});

补充说明

testSaga属于严格快照式测试,要求断言的effect类型、入参结构、取值完全和saga运行时yield出来的值一致,才会判定测试通过。

内容的提问来源于stack exchange,提问作者Elli Zorro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:24:04