Unit testing 使用它对redux减速机进行单元测试';它自己的初始状态
我有一个减速器,其默认初始状态定义如下:Unit testing 使用它对redux减速机进行单元测试';它自己的初始状态,unit-testing,reactjs,react-redux,Unit Testing,Reactjs,React Redux,我有一个减速器,其默认初始状态定义如下: const webReducer = (state = { fetched: false, data: {} }, action) => { switch (action.type) { case "FETCH_DATA": state = { ...state, fetched: action.payload.fetch
const webReducer = (state = {
fetched: false,
data: {}
}, action) => {
switch (action.type) {
case "FETCH_DATA":
state = {
...state,
fetched: action.payload.fetched
};
state.data.push( action.payload.data );
return state;
break;
}
return state;
};
expect(
webReducer( initialState, {
type: "FETCH_DATA",
payload: object
})
).toEqual( object );
当我运行测试以检查初始状态时,它通过了:
const initialState = {
fetched: false,
data: {}
};
it("Should have a default initial state", () => {
expect( webReducer( undefined, {}) ).toEqual( initialState );
})
但是,当我尝试测试向状态添加数据时,它返回以下错误:
TypeError:state.data.push不是一个函数
这就是我做测试的方式:
const object = {
fetched: true,
data: {
config: {size: 10}
}
};
expect(
webReducer( undefined, {
type: "FETCH_DATA",
payload: object
})
).toEqual( object );
如果我能顺利通过考试,为什么我现在会犯这个错误?我还尝试传递默认状态,如下所示:
const webReducer = (state = {
fetched: false,
data: {}
}, action) => {
switch (action.type) {
case "FETCH_DATA":
state = {
...state,
fetched: action.payload.fetched
};
state.data.push( action.payload.data );
return state;
break;
}
return state;
};
expect(
webReducer( initialState, {
type: "FETCH_DATA",
payload: object
})
).toEqual( object );
但是我得到了同样的错误。您将数据初始化为空对象,而该对象上没有推送功能。试着用下面的替换它,测试应该可以通过
state = {
fetched: false,
data: []
不得不做一些调整,以测试多个调度,但我得到了要点!谢谢你