Testing Asynchronous Callouts

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

📄 第 408 页 🎬 视频课程

课程章节介绍

好,我们来说说怎么测试那些用了“延续”(Continuation)的控制器。 在Apex里,延续是用来做长时间异步调用的,比如对外部服务的HTTP请求。但在测试里,你不能真的去调用外部服务,因为Apex测试不支持真正的网络调用。 所以,我们就需要模拟这个过程。你可以用两个关键的方法: 第一个是 `Test.setContinuationResponse`,用它来为某个延续对象设置一个假的响应,相当于你提前告诉系统:“等一下如果这个延续被执行,就返回我准备好的这个假数据。” 第二个是 `Test.invokeContinuationMethod`,它的作用是,在测试里手动触发那个延续的回调方法,就像真的收到了响应一样,让回调逻辑跑起来。 具体步骤很简单: 1. 在测试里,先调用你的控制器方法,拿到它返回的延续对象。 2. 验证这个延续的请求内容是不是你期望的,比如端点、方法、参数对不对。 3. 然后用 `Test.setContinuationResponse` 设置一个模拟的响应体。 4. 再用 `Test.invokeContinuationMethod` 执行回调。 5. 最后,验证控制器里的结果变量是不是和模拟的响应一致。 这样一来,你既满足了代码覆盖率的要求,又确保了异步回调逻辑是正确的,而且完全不用真的去访问外部系统。

关键词

Apex Salesforce Developer Guide