尝试在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
}));
});
答案 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