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。
我尝试使用 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。