首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用redux-saga- test -plan测试所有效果。所有效果都不匹配

如何使用redux-saga- test -plan测试所有效果。所有效果都不匹配
EN

Stack Overflow用户
提问于 2021-09-20 09:30:39
回答 1查看 366关注 0票数 0

我有一个生成器,我想用单元测试来覆盖它。

代码语言:javascript
复制
export default function* gatawayFlow() {
  yield all([
    takeEvery(actionTypes.GET_GATEWAYS_REQUEST, getGatewaysFlow),
    takeLatest(actionTypes.SELECT_GATEWAY_REQUEST, selectGatewayFlow),
  ]);
}

我用redux-sag- test -plan写了一个简单的测试

代码语言:javascript
复制
import {expectSaga, testSaga} from 'redux-saga-test-plan';
import gatawayFlow, {getGatewaysFlow, selectGatewayFlow} from '../logic/sagas';
import * as actions from '../logic/actions';
import * as actionTypes from '../logic/actionTypes';
import {takeEvery, takeLatest} from '@redux-saga/core/effects';

// Unit-test
describe('Unit tests', () => {
  test('Test all effect', () => {
    const saga = testSaga(gatawayFlow);
    saga
        .next()
        .all({
          [actionTypes.GET_GATEWAYS_REQUEST]: takeEvery(actionTypes.GET_GATEWAYS_REQUEST, getGatewaysFlow),
          [actionTypes.SELECT_GATEWAY_REQUEST]: takeLatest(actionTypes.SELECT_GATEWAY_REQUEST, selectGatewayFlow)
        })
        .next()
        .isDone();
    // expect(gatawayFlow().next().value).toEqual(all([
    //   takeEvery(actionTypes.GET_GATEWAYS_REQUEST, getGatewaysFlow),
    //   takeEvery(actionTypes.SELECT_GATEWAY_REQUEST, selectGatewayFlow),
    // ])); ---> THIS TEST WORKS CORRECT
  });
});

我的测试没有通过。我的终端中有这个错误。你知道我该怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-22 04:43:33

您应该使用all([...effects]) - parallel effects而不是{label: effect, ...}格式的字典对象

saga.ts

代码语言:javascript
复制
import { all, takeEvery, takeLatest } from 'redux-saga/effects';

export const actionTypes = {
  GET_GATEWAYS_REQUEST: 'GET_GATEWAYS_REQUEST',
  SELECT_GATEWAY_REQUEST: 'SELECT_GATEWAY_REQUEST',
};

export function* getGatewaysFlow() {}
export function* selectGatewayFlow() {}

export default function* gatawayFlow() {
  yield all([
    takeEvery(actionTypes.GET_GATEWAYS_REQUEST, getGatewaysFlow),
    takeLatest(actionTypes.SELECT_GATEWAY_REQUEST, selectGatewayFlow),
  ]);
}

saga.test.ts

代码语言:javascript
复制
import { expectSaga, testSaga } from 'redux-saga-test-plan';
import gatawayFlow, { actionTypes, getGatewaysFlow, selectGatewayFlow } from './saga';
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();
  });
});

测试结果:

代码语言:javascript
复制
 PASS   redux-saga-examples  packages/redux-saga-examples/src/stackoverflow/69252089/saga.test.ts
  Unit tests
    ✓ Test all effect (2 ms)

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |      75 |      100 |      20 |     100 |                   
 saga.ts  |      75 |      100 |      20 |     100 |                   
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        3.553 s
Ran all test suites related to changed files.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69252089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档