2017-07-14 3 views
0

ich habe diese Aktion, die ichWie Post Anrufe in axios mit Scherz und axios-Mock-Adapter

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.")); 
      } 
     }); 
} 

}

seine thunk mit testen, testen eine Aktion zu versenden, wenn ich eine Empfangs Bestätigung eines Auftragnehmers, der über eine API in die Datenbank aufgenommen wird.

Dies ist, was ich bisher versucht habe, aber es sagt immer, dass ich kann nicht lesen Eigenschaft "dann" von undefined, aber das ist, wie ich viele meiner anderen Versendungen, die Thunk nicht verwenden getestet habe.

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."); 
     }); 
    }); 

hat jemand eine Idee, wo ich überhaupt falsch liege?

Antwort

0

versuchen, das Versprechen von Ihrem Axios.post Anruf zurückkehren, die es zurück durch den instanziierenden Anruf zurück:

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