Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 使用它对redux减速机进行单元测试';它自己的初始状态_Unit Testing_Reactjs_React Redux - Fatal编程技术网

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: []

不得不做一些调整,以测试多个调度,但我得到了要点!谢谢你