Testing HTTP Callouts — MultiStaticResourceCalloutMock

DEX455 - Apex 集成与工具完全指南:Callouts、命名凭据、WSDL2Apex、Mock 测试

📄 第 391 页 🎬 视频课程

课程章节介绍

我们来聊聊 Apex 测试里一个很实用的小工具——,MultiStaticResourceCalloutMock, 类。 你之前可能已经听说过,测试的时候,我们不能真的去调用外部系统,否则测试会失败。所以 Apex 提供了模拟(mock)的方式,让测试假装得到了外部系统的回应。 那这个 MultiStaticResourceCalloutMock 呢,它就是专门用来模拟这种“对外 HTTP 调用”的。它和它的“兄弟” StaticResourceCalloutMock 很像,但关键区别是:它允许你,同一个测试里,给不同的外部接口地址(也就是不同的端点),分别配上不同的假响应,。 怎么用呢?很简单,三步: 第一,,创建它的一个实例,。 第二,,通过 setStaticResource 方法,告诉它“哪个端点”该返回“哪个静态资源”里的内容,。这里的静态资源就是你在 Salesforce 里上传的文件,比如 JSON 或 XML 文件,里面写好了你想让外部系统返回的假数据。你还可以顺便设置一下状态码,比如 200 表示成功,或者 404 表示找不到,还有内容类型比如 application/json。 第三,,调用 Test.setMock,把这个模拟对象注册进去,。这样一来,当你的测试方法里对之前指定的那个端点发起 HTTP 请求时,Salesforce 就不会真的去访问外网,而是直接返回你配置好的那个静态资源里的内容。 就这么简单。它特别适合你需要模拟好几个不同的外部服务,或者同一个外部服务的不同接口,每个接口返回不一样的数据的情况。这样你的代码逻辑就可以在测试里完整跑通,又不会真的去调外部接口,测试既快又稳定。 记住,核心是:,用静态资源文件存放响应内容,然后按端点绑定模拟响应,。这样,你就可以灵活地控制不同 URL 的返回结果了。

关键词

Apex Salesforce Developer Guide