You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jest和Chai测试时如何测量GraphQL API的响应时长

方案1:零依赖手动计时(兼容性最好)

不需要引入任何额外工具,直接在请求前后记录时间戳计算差值即可,修改你的测试代码如下:

it("Query works", async () => {
  const startTime = Date.now();
  const res = await chai
    .request(app)
    .post("/api")
    .send({
      query: `
         {
          someQuery {
            data
          }
        }
      `,
    });
  // 计算得到耗时,单位为毫秒
  const requestDuration = Date.now() - startTime;
  // 可以直接打印记录,也可以写入文件做后续统计
  console.log(`someQuery 响应耗时:${requestDuration}ms`);
  // 也可以额外增加性能断言,要求耗时不超过指定阈值
  expect(requestDuration).toBeLessThan(500);

  expect(res.body.data.someQuery.length).toBe(31);
})

如果需要批量统计所有测试用例的耗时,可以把请求逻辑封装成公共函数,不用每个用例重复写计时代码。

方案2:使用chai-http内置属性

如果你使用的是较新版本的chai-http,响应对象本身已经内置了耗时统计,直接读取res.elapsedTime属性即可获取请求耗时,不需要自己手动计算:

it("Query works", async () => {
  const res = await chai
    .request(app)
    .post("/api")
    .send({
      query: `
         {
          someQuery {
            data
          }
        }
      `,
    });
  console.log(`响应耗时:${res.elapsedTime}ms`);
  expect(res.body.data.someQuery.length).toBe(31);
})

第三方工具选择

如果需要更复杂的统计能力,比如百分位耗时、平均耗时、自动生成性能报告,可以选择以下工具:

  • jest-bench:可以直接集成到Jest测试流程中,自动生成性能基准测试报告,支持对比不同版本的性能差异
  • chai-http-stats:可以批量采集所有chai-http请求的耗时数据,支持自定义统计规则

适配Github Actions的优化建议

你可以把耗时数据按固定格式输出到CI日志中,后续可以直接通过CI的日志分析能力汇总性能变化,也可以设置耗时阈值断言,一旦接口耗时超过阈值就直接判定测试失败,提前发现性能退化问题。

内容的提问来源于stack exchange,提问作者lpetrucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:36:01