测试redux-saga中的try-catch

时间:2017-04-30 19:04:07

标签: javascript reactjs redux redux-saga

尝试在saga中测试catch语句时遇到问题。我正在使用Mocha和chai,它在输出到控制台的Error: error时未通过以下测试。

saga.js

function* submitCredentials(action) {
  try {

  } catch(e) {
    yield put({type: LOGIN_FAIL, message: e.message})
  }
} 

test.js

it('should catch errors', () => {
  const generator = submitCredentials();
  const error = new Error('error');

  expect(generator.throw(error).value, put({
    type: actions.LOGIN_FAIL, error
  }));
});

3 个答案:

答案 0 :(得分:2)

试试这样:

 const generator = submitCredentials();
 const error = new Error('error');
 generator.next().value
 output = generator.throw(error).value
 let expected =  put({
    type: actions.LOGIN_FAIL, error
 })
 expect(output).toEqual(expected)

答案 1 :(得分:0)

您的生成器会调度带有错误消息的操作,但在测试中,您希望操作有效内容是错误对象。所以如果你把它改成期待

put({
  type: actions.LOGIN_FAIL, {message: 'error'}
})

它应该有用。

答案 2 :(得分:0)

在让生成器产生错误之前,它必须是生成器可以执行下一步的步骤:generator.next()。value