javascript - 测试捕获 Promise 错误

标签 javascript promise jasmine es6-promise jestjs

你能帮我解释一下如何编写捕获错误的测试吗?

例如,我有这个假代码:

export default function someFunc (num) {
    return someOtherFunc(num).then(resp => {
        return resp + 1
    }).catch(() => {
        return 0
    })
}

这是对之前代码的 Jest 测试。这是成功测试:

test('Should return 3', () => {
    expect.assertions(1)
    return expect(someFunc(2)).resolves.toBe(3)
})

我想测试捕获错误,我该怎么做?此测试将失败,并出现错误“预期调用一个断言,但只收到零个断言调用”:

test('Should return 3', () => {
    expect.assertions(1)
    return expect(someFunc()).rejects.toBe(0)
})

抱歉,如果这个问题很愚蠢。我只是在学习 promise

最佳答案

如果您从处理程序返回,它不会拒绝,而是使用返回值进行解析。因此,在您的情况下,您会得到一个用 0 履行的 promise 。

要拒绝错误,请抛出它。

关于javascript - 测试捕获 Promise 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536748/

相关文章:

javascript - jQuery : append or replace automatic?

vue.js - 如何在 Vuex 操作完成之前阻止 Vue 生命周期继续进行?

javascript - 使用 Velocity 和 Jasmine 测试 Meteor 时需要超时

javascript - nodejs 在测试用例中运行 eval

javascript - 无法访问 Angular-Meteor 中的集合

javascript - 如何在 Promise 构造函数中正确解析 Promise

javascript - 揭示测试的模块替代方案或变体

javascript - 如何在 javascript 单元测试期间加载二进制文件?

javascript - 使用 Promise 进行 Angular 服务的 Jasmine Mock

javascript - 使用 Node.js 将多个图像写入磁盘