reducer 测试 returns 结果不符合预期

Test of reducer returns the results which are not equal to expected

我尝试使用 React 测试库测试我的 reducer,但我不明白为什么我得到的结果与预期不符。你能给我解释一下吗?

我的减速机

export const myReducer = (state = initialState, { type, payload }) => {
    switch (type) {
        case 'GET_DATA':
            return [...payload];
        default:
            return state;
    }
};

我的测试

import { mockedState } from 'mocks';

import {
    myReducer,
    GET_DATA,
} from 'store';

const initialState = []

describe('reducer', () => {

  it('should get data', () => {
    const getAction = {
      type: GET_DATA,
      payload: mockedState.data,
    };
    expect(myReducer(initialState, getAction )).toEqual([...mockedState.data]);
  });
})

在你的 reducer 中,你在 switch case 中使用了一个字符串 "GET_DATA"。但是从你的测试来看,你的动作类型是一个变量GET_DATA。尝试将减速器的第一个案例更改为

case GET_DATA: //remove the quotes

其中 GET_DATA 来自 'store'.

其实我只是记得switch语句的case必须是常量。因此,只需确保您的商店 GET_DATA 实际上等于“GET_DATA”。

问题似乎围绕着可迭代 a 不 'shallow' 等于 [...a] 时展开。如果 a 是一个数组,应该始终如此,但对于任何其他可迭代对象则不是。

我怀疑 mockedState.data 不是失败测试中的数组。

例如:

const a = 'hello';
const b = [...a];        // ["h","e","l","l","o"]

在这种情况下,a 不等于 b。