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

Pactum测试Mock外部API报Interaction not exercised的本地解决方法

报错核心原因

Interaction not exercised本质是你定义的Mock规则从未被请求命中,两个直接诱因:

  • Pactum本地Mock的交互匹配规则不支持在path字段填完整URL,你写的完整公网地址属于无效配置,不会被匹配逻辑识别。
  • 业务代码默认还是向公网的mockapi.io地址发请求,完全没把请求发到Pactum启动的本地Mock服务上,自然命中不了规则。
本地Mock落地步骤
  • 第一步:固定Pactum Mock服务端口,在测试全局生命周期启动/关闭服务
    不要用默认随机端口,固定端口后方便业务代码把外部请求指向本地Mock,示例代码(以Mocha/Jest钩子为例):
    const { mock, spec } = require('pactum');
    
    before(async () => {
      await mock.start(3001); // 固定监听本地3001端口
    });
    
    after(async () => {
      await mock.stop(); // 测试全部跑完关闭Mock服务
    });
    
  • 第二步:改造业务代码的外部API地址配置,支持环境切换
    不要把外部API的基地址https://62b32eab4f851f87f4563d9b.mockapi.io硬编码在业务逻辑里,通过环境变量做适配,测试环境下把基地址指向本地Mock服务:
    // 业务代码中外部API基地址配置
    const EXTERNAL_API_BASE = process.env.EXTERNAL_API_BASE || 'https://62b32eab4f851f87f4563d9b.mockapi.io';
    
    // 实际调用外部API的逻辑
    const externalUserRes = await fetch(`${EXTERNAL_API_BASE}/user/${userId}`);
    
    运行测试时注入环境变量EXTERNAL_API_BASE=http://localhost:3001,所有业务侧发起的外部API请求就会全部打到本地Mock服务上。
  • 第三步:修正交互规则的配置格式
    Pactum交互规则的path字段只需要填写接口路径部分,不需要带域名协议,修正后的测试用例:
    it('should update record', async () => {
      await spec()
        .post('http://localhost:3000/user')
        .withJson({
          "name": "helen",
          "city": "London"
        })
        .useInteraction({
          request: {
            method: 'GET',
            path: '/user/32' // 仅填写路径部分即可
          },
          response: {
            status: 200,
            body: [
              {"name":"Jerald Labadie","country":"Buckinghamshire","city":"Lake Junebury","email":"Alf_Schneider81@gmail.com","id":"32"}
            ]
          }
        })
        .expectStatus(200)
    })
    
优化提示
  • 如果路径里的用户ID是动态生成的,不要写死/user/32,可以用通配符/user/*、路径参数规则或者正则做匹配,避免动态值导致匹配失败。
  • 不需要手动加.wait(3000)做硬等待,Pactum默认会等待所有声明的交互被调用完成后再执行断言,硬等待只会拖慢测试执行速度。
  • 如果本地开了系统代理,记得把localhost加入代理绕过列表,避免请求被代理转发到公网,打不到本地Mock端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:06:34