课程章节介绍
同学们,今天我们来看一个让HTTP调用测试变得特别简单的工具,叫做 StaticResourceCalloutMock。
以前,我们要在测试里模拟外部服务的响应,得自己写一个类去实现 HttpCalloutMock 接口,挺麻烦的。现在 Apex 内置了这个 StaticResourceCalloutMock 类,就不用再费劲写那么多代码了。它怎么用呢?其实就是提前把要返回的响应内容,放到一个静态资源文件里,然后在测试类里告诉系统:“嘿,碰到callout的时候,就拿这个静态资源里的东西当作响应。”
具体步骤很容易:第一步,你先去 Salesforce 静态资源设置里,上传一个文本文件,文件内容就是你想要的响应正文,可以是 JSON 字符串、XML,或者任意字符串,只要和你后面指定的内容类型对得上就行。比如你设了内容类型是 application/json,那这个文件里就得是合法的 JSON 数据。
第二步,在测试方法里,创建 StaticResourceCalloutMock 的一个实例。然后设置几个属性:用 setStaticResource 指定你用哪个静态资源的名字,用 setStatusCode 设定返回的状态码,像 200 成功、404 找不到之类的,再用 setHeader 或者 setContentType 来设定 Content-Type 头,保证跟静态资源的内容匹配。
最后,别忘了调用 Test.setMock 方法,把刚才建好的 mock 对象和 HttpCallout.class 关联起来。这样,当被测试的代码发起 HTTP 请求时,就不会真的去联网,而是直接收到你在静态资源里准备好的响应。
简单总结一下:准备一个静态资源文件 → 创建 StaticResourceCalloutMock 对象 → 配好资源名、状态码、内容类型 → 用 Test.setMock 挂上,齐活。这样写测试又快又干净,还不依赖外部网络,赶紧试试看吧。
关键词
Apex
Salesforce
Developer Guide