预期toThrow()

时间:2018-07-27 21:08:39

标签: javascript jestjs create-react-app

我有一些验证密钥的代码,它将抛出无效的密钥

validateKey(key) {
    if (!this.isValidKey(key)) {
        throw new Error(`Unknown preference key: ${key}`)
    }
}

此方法可以正常工作,并且会引发新的错误。

后来我在try catch内调用此方法重新抛出错误

getCasePref(name) {
    try {
        this.config.validateKey(name)
        const propertyDetails = await Services.get(
            `UserProperty/${this.casename}/${this.username}/${name}`
        )
        const preference = this.config.deserializeValue(name, propertyDetails.propertyValue)
        return preference
    } catch (error) {
        // Catch network or other types of errors {}

        throw error
    }
}

我的考试很简单

it('Expects an unknown preference to throw', () => {
    const propertyName = 'unknownProp'

    // Fake a server error
    axiosMock.onGet('UserProperty/case1/jdoe/unknownProp').replyOnce(500)

    expect(() => {
        Preferences.getCasePref(propertyName)
    }).toThrow()
})

玩笑的测试运行崩溃(CRA)

C:\Node\Investigations\node_modules\react-scripts\scripts\test.js:20
throw err;
^

Error: Unknown preference key: unknownProp

抛出的错误会导致测试错误,从而无法创建create-react-apps未处理异常。我的测试正在像文档所示的回调中运行,但仍然崩溃。

注意: 我确实尝试通过

来更简单地重新创建它
expect(() => {
    throw new Error('testing')
}).toThrow()

这按预期工作。 “方法”抛出并开玩笑地抓住它。

0 个答案:

没有答案