Got Timeout - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调

Posted

技术标签:

【中文标题】Got Timeout - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调【英文标题】:Got Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout 【发布时间】:2018-09-18 09:44:52 【问题描述】:

我在用 jest 进行 api 测试时遇到问题

目前的行为是什么?

 Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
      at ../../../../Users/chhoeurng.sakona/AppData/Roaming/npm/node_modules/jest-cli/node_modules/jest-jasmine2/build/queue_runner.js:68:21

我当前的代码

it ('GET should return a status of 200 OK', function (done) 
        frisby
            .get('url-api')
            .expect('status', 200)
            .done(done);
    );

目前的行为是什么? It should work normally and no error.

请提供您的确切 Jest 配置 I do not have configuration

在您的项目目录中运行 npx envinfo --preset jest 并粘贴 结果在这里

 System:
    OS: Windows 10
    CPU: x64 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
  Binaries:
    Node: 8.11.1
    Yarn: Not Found
    npm: 5.6.0
   jest v22.4.3

【问题讨论】:

【参考方案1】:

使用 Promise 唤醒时需要返回一个 Promise 或使用异步函数:

it ('GET should return a status of 200 OK', async() => 
        await frisby
            .get('url-api')
            .expect('status', 200)

    );

it ('GET should return a status of 200 OK', function () 
        return frisby
            .get('url-api')
            .expect('status', 200)

    );

也可以看看docs

【讨论】:

嗨安德烈亚斯,当我使用你的第二个代码时,我仍然遇到这个错误。第一个代码块不正确。请你帮忙。 现在我尝试使用此更改此行然后它可以工作it ('GET should return a status of 200 OK', async (done) => 你能帮帮我吗,我不知道我的代码哪里出错了,它仍然会超时。 const frisby = require('frisby'); const Joi = frisby.Joi; // Frisby exports Joi for convenience on type assersions it ('Should sakona return a status of 200', function (done) return frisby .get('url-api') .expect('status', 200) .expect('json', 'status', '3') .expect('jsonTypes', 'merchants*', // Assert *each* object in 'items' array 'uid': Joi.number().required(), 'category': Joi.string().required(), ) .done(done); 最好的方法毕竟不要使用done,因为在我的回答中描述使用异步函数时不需要它。我将更新代码以使其更清晰

以上是关于Got Timeout - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调的主要内容,如果未能解决你的问题,请参考以下文章

已解决TypeError: search() got an unexpected keyword argument ‘requests_timeout’

为什么Linux在x64中使用两个GOT部分? .GOT与.got.plt

Android 逆向函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )

为啥除了 GOT 之外还有 PLT,而不是仅仅使用 GOT?

.got 和 .got.plt 部分有啥区别?

GOT表覆写技术