首页 > 解决方案 > 测试 Redux 箭头函数 Action Creators

问题描述

我的 React-Redux 应用程序中有一个箭头函数,它只调度一个没有有效负载的动作,它将擦除(重置)我的 Redux 存储的一部分。不涉及HTTP(或 Promises )。

export const resetSearch = () => dispatch => {
  dispatch({
    type: RESET_SEARCH
  });
};

我想测试它是否返回正确的动作类型:

import * as actions from '../actions/actionCreators';
import * as types from '../actions/actionTypes';

describe('actions', () => {
  it('should create an action to reset part of the store', () => {
    const expectedAction = {
      type: types.RESET_SEARCH
    };
    expect(actions.resetSearch()).toEqual(expectedAction);
  });
});

测试没有通过,因为我需要返回一个 Object,但是,我发送了这个匿名箭头函数。这是开玩笑的输出

预期值等于:{“type”:“RESET_SEARCH”}

收到:[功能匿名]

考试应该怎么做?所有的帮助都会得到帮助!

谢谢

标签: unit-testingreduxreact-reduxjestjs

解决方案


你可以试试下面的代码片段吗,它应该这样做:

const expectedAction = {
  type: types.RESET_SEARCH
};

let retnFunc = actions.resetSearch();
retnFunc((receivedAction)=>{
    expect(receivedAction).toEqual(expectedAction);  
});

这里resetSearch返回一个函数,该函数被操作对象调用,所以只是模仿了相同的。

如果您需要更多帮助,请告诉我!


推荐阅读