我正在尝试使用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不接受任何参数。

09-17 08:56