我正在尝试使用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'));
但它不起作用。哪种测试方法正确?
答案 0 :(得分:1)
尝试将测试代码从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
不接受任何参数。