如何使用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
相关产品推荐
相关产品推荐

