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

使用HttpCalloutMock做Apex测试时是否会真实发起外部API请求?

测试阶段是否会发起真实API请求

只要你在Apex测试代码中通过Test.setMock(HttpCalloutMock.class, 自定义Mock实例)完成了模拟接口绑定,运行测试时完全不会发起真实的外部HTTP请求:平台会直接拦截代码中的Http.send()调用,跳过实际的网络请求环节,直接将你在Mock类respond方法中定义的模拟响应数据返回给业务逻辑,全程只有你预设的模拟数据在流程中流转。

带Mock的Callout测试并非无效,核心价值如下

  • 校验请求构造逻辑正确性:你可以在Mock类的respond方法中,先对传入的HttpRequest对象做断言校验,比如验证请求方法是否为预期的GET/POST、请求头是否携带了正确的鉴权参数、请求体格式和字段是否符合第三方API规范,这些都是你业务代码的自有逻辑,无需调用真实接口就能提前发现错误。
  • 覆盖全场景响应处理逻辑:你可以编写多套Mock实现,分别模拟第三方接口返回200成功、400参数错误、401鉴权失败、500服务异常、甚至网络超时的场景,低成本验证你的业务代码在不同返回下的处理逻辑是否符合预期:比如成功时是否能正确解析响应数据写入对应对象、异常时是否能正确捕获报错、生成规范的错误日志/提示信息,这些场景如果依赖调用真实接口,很难低成本覆盖完全。
  • 满足平台部署的强制要求:Salesforce原生禁止Apex测试发起真实外部Callout,只要涉及Callout的代码没有绑定Mock,测试运行会直接抛出异常,无法通过代码覆盖率校验,也不能部署到生产环境。

内容的提问来源于stack exchange,提问作者Pablo Barría Urenda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:06:02