Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
Javascript redux模拟存储getActions返回空数组_Javascript_Reactjs_Redux_Nock_Redux Mock Store - Fatal编程技术网

Javascript redux模拟存储getActions返回空数组

Javascript redux模拟存储getActions返回空数组,javascript,reactjs,redux,nock,redux-mock-store,Javascript,Reactjs,Redux,Nock,Redux Mock Store,这是我的行动创造者: export function signinUser({login, password}){ return function(dispatch){ axios.post('/auth/signin', {login, password}) .then((response)=>{ //-update state to indicate user i

这是我的行动创造者:

export function signinUser({login, password}){  

    return function(dispatch){      
        axios.post('/auth/signin', {login, password})
            .then((response)=>{             
                //-update state to indicate user is authenticated
                var {username, userid, token} = response.data;
                dispatch(authUser(token, username, userid));                
                console.log(1)
            })
            .catch(()=>{
                //- show error message
                dispatch(setErrorMessage('Bad Login Info'));                                
                console.log(2)
            });
    }   
}
export function signinUser({login, password}){  
    //you have to return this one
    return function(dispatch){      
        return axios.post('/auth/signin', {login, password})
            .then((response)=>{             
                //-update state to indicate user is authenticated
                var {username, userid, token} = response.data;
                dispatch(authUser(token, username, userid));                
                console.log(1)
            })
            .catch(()=>{
                //- show error message
                dispatch(setErrorMessage('Bad Login Info'));                                
                console.log(2)
            });
    }   
}
测试:

 describe('signinUser', ()=>{

    var {signinUser} = actions;
    var arg;

    beforeEach(() => {
        arg = {
            login: 'john',
            password: '123'
        }           
    });

    afterEach(function () {
        nock.cleanAll()
    });

    it('should call setErrorMessage', ()=>{     

        nock('http://localhost:5000/auth/signin').post('')              
            .reply(401)         

        var expectedActions = [
            {
                type: 'SET_ERROR',
                payload: 'Bad Login Info'
            }
        ];

        var store = mockStore({});          
        store.dispatch(signinUser({...arg}));
        expect(store.getActions()).to.equal(expectedActions)
    });    
输出为:

2
AssertionError: expected [] to equal [ Array(1) ]
这意味着-动作创建者已被调用-捕获中的console.log(2)已被调用! 但是getActions返回一个空数组。
请帮我找出原因。

好的,问题是:我没有在action creator中返回承诺。 以下是my action creator的更新版本:

export function signinUser({login, password}){  

    return function(dispatch){      
        axios.post('/auth/signin', {login, password})
            .then((response)=>{             
                //-update state to indicate user is authenticated
                var {username, userid, token} = response.data;
                dispatch(authUser(token, username, userid));                
                console.log(1)
            })
            .catch(()=>{
                //- show error message
                dispatch(setErrorMessage('Bad Login Info'));                                
                console.log(2)
            });
    }   
}
export function signinUser({login, password}){  
    //you have to return this one
    return function(dispatch){      
        return axios.post('/auth/signin', {login, password})
            .then((response)=>{             
                //-update state to indicate user is authenticated
                var {username, userid, token} = response.data;
                dispatch(authUser(token, username, userid));                
                console.log(1)
            })
            .catch(()=>{
                //- show error message
                dispatch(setErrorMessage('Bad Login Info'));                                
                console.log(2)
            });
    }   
}

是的,我也面临同样的问题。我所有的动作创建者都是以这种形式编写的,只有一个动作创建者不是以这种返回格式编写的。我为此浪费了两天时间。 最后,我重组了action creator,它运行良好