2017-08-17 78 views
1

呼叫我创建了一个简单的例子来测试我的行动,但我store.dispatch没有返回一个承诺。有人能告诉我什么是错的吗?测试异步与玩笑,终极版,模拟店和Moxios

Action.js代码:

export const handleSubmit = inputData => 
(dispatch) => { 
axios.post(`${API_URL}/process-input/`, { input: inputData }) 
    .then((resp) => { 
    dispatch({ 
     type: 'UPDATE_OUTPUT', 
     payload: resp.data, 
    }); 
    }) 
    .catch((e) => { 
    dispatch({ 
     type: 'UPDATE_OUTPUT', 
     payload: e.message, 
    }); 
    }); 

};

而且我的测试:

import configureMockStore from 'redux-mock-store'; 
import thunk from 'redux-thunk'; 
import moxios from 'moxios'; 
import * as actions from './../../../../src/modules/inputData/action'; 
import { API_URL } from './../../../../src/constants'; 

const middlewares = [thunk]; 
const mockStore = configureMockStore(middlewares); 

describe('InputData actions',() => { 
test('Test input value update',() => { 
moxios.install(); 
moxios.stubRequest(`${API_URL}/process-input/`, { status: 200, response: 'A nice test result' }); 
const store = mockStore(); 

return store.dispatch(actions.handleSubmit('anyData')) 
    .then(() => { 
    expect(store.getActions()).toEqual([ 
     { type: 'UPDATE_OUTPUTT', payload: 'A nice test result' }, 
    ]); 
    }); 

}); });

所返回的错误:无法读取属性“然后”未定义

+0

面临着同样的问题,在这个任何更新? –

回答

2

你的终极版动作没有返回一个承诺。你应该返回axios.post函数。

export const handleSubmit = inputData => 
(dispatch) => { 
return axios.post(`${API_URL}/process-input/`, { input: inputData }) 
    .then((resp) => { 
    dispatch({ 
     type: 'UPDATE_OUTPUT', 
     payload: resp.data, 
    }); 
    }) 
    .catch((e) => { 
    dispatch({ 
     type: 'UPDATE_OUTPUT', 
     payload: e.message, 
    }); 
    }); 
};