在发电机内测试抛出错误?

时间:2016-12-29 15:05:21

标签: javascript testing redux generator redux-saga

我正在尝试使用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'));

但它不起作用。哪种测试方法正确?

1 个答案:

答案 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不接受任何参数。