2017-07-14 60 views
0

我有這個動作,我要測試測試後調用在愛可信如何用開玩笑和愛可信 - 模擬適配器

export function addContractorToJob(values) { 
return dispatch => { 
    axios.post(`${API_URL}add-contractor`, values) 
     .then((job) => { 
      if(job) { 
       dispatch(sendSuccessMessage(ADD_CONTRACTOR, "You have successfully applied for this job.")); 
      } 
     }); 
} 

}

其使用的thunk當我收到派遣行動承包商的構造通過api添加到數據庫中。

這是我迄今爲止嘗試的,但它總是說,我不能不讀取屬性'然後'的未定義,但這是我一直在測試我的其他很多不使用thunk的調度。

const middlewares = [thunk]; 
    const mockStore = configureStore(middlewares); 
    const mock = new MockAdapter(axios); 

it('should call success message action on successfully adding contractor to job',() => { 
     mock.onPost(`${actions.API_URL}add-contractor`).reply(200, 
      [{id: 123, jobTitle: 'the job title'}]); 

     const store = mockStore(); 
     store.dispatch(actions.addContractorToJob(1001)).then(() => { 
      expect(store.getActions()[0].type).toEqual(actions.ADD_CONTRACTOR); 
      expect(store.getActions()[0].payload).toEqual("You have successfully applied for this job."); 
     }); 
    }); 

沒有人有任何想法在哪裏我錯了嗎?

回答

0

嘗試恢復從您的通話Axios.post的承諾,將其返回通過實體化的呼叫:

return dispatch => { 
    return axios.post(`${API_URL}add-contractor`, values) 
    .then((job) => { 
    ...