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

如何使用Nock统计fetch的调用次数?

用Nock统计匹配URL的请求调用次数

Nock本身没有提供像fetch-mock-jest里toHaveFetchedTimes那样的直接断言方法,但可以通过两种简单方式实现统计匹配URL的请求次数:

方法一:利用拦截器的callCount属性

每次创建Nock拦截器时,该拦截器实例会自动记录被匹配调用的次数,通过访问拦截器的callCount属性就能获取次数:

// 创建拦截器
const apiMock = nock('https://your-api-domain.com')
  .get('/target-path')
  .reply(200, { result: 'success' });

// 触发你的Hook逻辑(比如调用请求)

// 断言调用次数
expect(apiMock.callCount).toBe(1); // 验证是否只调用了一次

这个属性会自动累加每次匹配到的请求,即使你给拦截器设置了persist()允许重复匹配,也能正确统计总调用次数。

方法二:自定义计数器

如果需要更灵活的控制,可以在拦截器的回调里手动维护计数器:

let requestCount = 0;

nock('https://your-api-domain.com')
  .get('/target-path')
  .before(() => {
    // 请求匹配前递增计数器
    requestCount++;
  })
  .reply(200, { result: 'success' });

// 触发Hook逻辑

// 断言次数
expect(requestCount).toBe(1);

这种方式适合需要在请求生命周期的特定阶段(比如请求发起前、响应返回前)统计的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:46:02