2017-07-14 28 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) => { 
    ...