2017-08-17 15 views
1

私のアクションをテストする簡単なケースを作成しますが、私のstore.dispatchは約束を返していません。誰かが間違っていることを教えてくれますか?Jest、redux-mock-store、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

の「を」プロパティを読み取ることができませんあなたのReduxのアクションは約束を返していません。 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, 
    }); 
    }); 
}; 
関連する問題