如何使用sinon,mocha,chai在reactsjs中编写catch块操作的测试用例?

时间:2017-06-07 12:21:37

标签: reactjs mocha sinon chai

我的行动是这样的: -

export function requestModel(param) {
  return (dispatch) => {
    dispatch({
      type: 'REQUEST',
      loadModel: true,
     });
    dispatch(getModel(param)).then(response => response.json())
      .then(model=>
        dispatch(receiveModel(model)))
      .catch(() => {
          dispatch({
          type: MODEL_FAILURE,
          loadModel:false,
        });
      });
  };
}

我编写了测试用例来覆盖catch块: -

it('requestModel() handle sxception...............', (done) => {
      const response = { json: () => data };
    // call the actual function with stubbed function
    try {
      dispatchStub.withArgs(getDeviceApiStub).returns(Promise.reject(response));
      dispatchStub.withArgs(getDeviceActionStub).returns(Promise.resolve(response));
      const returnFunction = modelAction.requestModel(actionParam);
      returnFunction(dispatchStub);
      done();
      sinon.assert.calledWithMatch(dispatchStub, {
       type: MODEL_FAILURE,
      loadModel:false,
      });
      done();
    } catch (err) {
      done(err);
    }
  });

但问题是在catch方法块之前它正在调用sinon.assert,就像我上面写的那样。如何处理这个问题,我也使用异步等待,但同样的问题即将来临,有什么原因让我可以在reactjs中为我的行动的catch块编写测试用例?

0 个答案:

没有答案