Redux减速机单元测试

时间:2017-06-19 15:25:52

标签: unit-testing redux mocha

我正在尝试为redux减速机进行单元测试。但是,我正在努力获得相同的预期和平等的结果。

const initState = {};

export default function (state = initState, action) {
  const newState = { ...state };
  switch (action.type) {

    case CREATE_TYPE:
      return {
        ...state,
        [action.customType.id]: {
          ...action.customType
        }
      };
    default:
      return state;
  }
}

我的测试。似乎customType: { id: 'test-id' }

中存在问题
describe('reducer', () => {
  it('should return the initial state', () => {
    const state = reducer(undefined, { type: 'unknown' });
    expect(state).toEqual({});
  });

  it('should handle CREATE_TYPE', () => {
    expect(reducer({ test: true }, {
      type: CREATE_TYPE,
      customType: { id: 'test-id' },
      id: 'test-id'
    })).toEqual({
      'test-id': 'test-type',
      'test': true
    });
  });
});

2 个答案:

答案 0 :(得分:2)

通常有助于拼出一切。

通过这种方式,您可以清楚地了解您的预期结果。

import moment from 'moment';

然后更容易确切地看到问题所在。

答案 1 :(得分:1)

你正在从减速器中退出:

{
    ...state,
    [action.customType.id]: {
      ...action.customType
}

如果你发送

{
  type: CREATE_TYPE,
  customType: { id: 'test-id' },
  id: 'test-id'
}

将等同于:

{
   ...state,
   'test-id' : { id: 'test-id' }
}

你正在评估它等于

{
 ...state,
'test-id': 'test-type'
}

我不知道您期望通过减速机格式化您的状态 - 但现在您的减速机设置方式将无法提供您期望的状态。我不知道你在期待什么,因为我没有看到节点或价值'测试类型'您提供的代码中的任何其他位置看起来你可能只有一些语法错误?