我正在尝试使用Jest和Chai如下测试生成器函数内引发的错误:
// function
function * gen () {
yield put({ type: TIME_OUT_LOGOUT })
throw new Error('User has logged out')
}
//test
let genFunc = gen()
expect(genFunc().next).to.deep.equal(put({ type: TIME_OUT_LOGOUT }))
expect(genFunc().next).to.throw(Error('User has logged out'));
但这不起作用。哪个是测试此方法的正确方法?
最佳答案
尝试将测试代码从genFunc().next
更改为genFunc.next().value
编辑:
断言应为:expect(genFunc.next().value).toEqual(put({type: TIME_OUT_LOGOUT}));expect(genFunc.next).toThrow(Error);
对于第二个断言,expect(() => genFunc.next()).toThrow(Error);
也将起作用,但是包装函数() => genFunc.next()
是不必要的,因为genFunc.next
不接受任何参数。