当前位置: 首页 > 知识库问答 >
问题:

JEST接收的函数没有引发,但引发了HTTPError

季稳
2023-03-14

我正在用JEST和Got测试一个endpoint。我预计有403个禁止错误。下面的代码从catch块打印错误,如果相同的调用不抛出错误,则失败。为什么?

    try {
        response = await api(`verify/${profile.auth.verifyToken}`, {method: 'POST'}).json();
    } catch (e) {
        console.log(e);
    }
    expect(async () => {
        response = await api(`verify/${profile.auth.verifyToken}`, {method: 'POST'}).json();
    }).toThrow();

null

console.log test/api.int.test.js:112
HTTPError: Response code 403 (Forbidden)
    at EventEmitter.<anonymous> (C:\dev\mezinamiridici\infrastructure\node_modules\got\dist\source\as-promise.js:118:31)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  name: 'HTTPError'
}


Error: expect(received).toThrow()
Received function did not throw

null

expect(() => api(`verify/${profile.auth.verifyToken}`, {method: 'POST'})).toThrow();

顺便说一句,当HTTPError被抛出而没有被捕获时,就没有堆栈跟踪,我也看不到错误被抛出的位置。如果有其他的错误,我确切地看到哪条测试线是负责的。为什么?

共有1个答案

薛兴言
2023-03-14

用于检查同步函数是否抛出错误。尽管异步函数使用相同的 术语,但它并不包括如果承诺陷入拒绝状态时的测试。

请尝试 :

expect(() => api(`verify/${profile.auth.verifyToken}`, {method: 'POST'}).json())
  .rejects.toThrow();
 类似资料:
  • 我使用的是Java14,但我记得它在过去的版本中是有效的。

  • 我试图在grails域对象上执行sql语句。当直接在db(h2)上执行时,is工作正常。 通过hibernate,我得到: 没有节点的数据类型:org.hibernate.hql.internal.ast.tree.MethodNode-[METHOD_CALL]MethodNode:'('-[METHOD_NAME]IdentNode:'to_char'{originalText=to_char

  • 我在做一个基于线性探测的自定义哈希表,在C 11中,我在其中做了一个函数,函数应该返回哈希表中对应键的值,这是我的代码: 问题是,传递的每个键在哈希表中可能没有对应的值。在这个函数中,我无法获得如何处理这个异常。处理这个异常的可能方法是什么?C STL

  • 问题内容: 我在接口抛出异常的地方读了这段代码,但是实现它的类却没有抛出异常或捕获异常,这是为什么呢?在Java中合法或安全吗? 问题答案: 实现和扩展的一般规则是,您可以使新类或接口的限制较少,而不能限制较多。如果您认为将异常作为限制进行处理的要求,则未声明异常的实现的限制性较小。对该接口进行编码的任何人都不会遇到您的课的麻烦。 -斯坦·詹姆斯 作为http://www.coderanch.co

  • 我为一个更大的应用程序构建了一个库/模块,它从一个函数中抛出一个异常。如果找不到文件或者文件包含错误的格式,就会抛出异常。 该方法类似于: 异常将终止我的模块,因为它将被捕获在使用我的模块的应用程序中,但没关系,因为格式不好。 我想知道的是——像这样从递归函数中抛出异常是一种不好的做法吗?

  • 当我运行测试时,代码中出现了“意外的令牌错误: 错误被抛出到“( 我写过笑话测试。这是我第一次使用酶和react编写测试用例。所以我不熟悉这个设置。我已经安装了:babel jest、react dom、babel插件转换导出扩展、enzyme-adapter-react-16、react测试渲染器、@babel/preset env和@babel/core package.json: jest.