我在一个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
  }));
});发布于 2017-05-01 05:18:17
像这样试一下:
 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)发布于 2017-05-09 08:18:27
您的生成器发送带有错误消息的操作,但在测试中,您期望操作有效负载是错误对象。因此,如果您将其更改为期望
put({
  type: actions.LOGIN_FAIL, {message: 'error'}
})应该能行得通。
发布于 2020-10-07 03:36:51
在让生成器生成错误之前,它必须是生成器可以执行下一步的步骤: generator.next().value
https://stackoverflow.com/questions/43710235
复制相似问题