课程章节介绍
同学们,我们来看这一页。这一页讲的是什么呢?就是我们在写Apex测试的时候,怎么去模拟一个外部服务的HTTP响应。因为我们不能在测试里真的去调用外部系统,对吧?这样又慢,又不稳定,还消耗调用次数。所以Salesforce提供了一个接口,叫HttpCalloutMock。
你只需要写一个类,实现这个接口,然后重写里面的respond方法。在这个respond方法里,你可以做两件事:第一,你可以检查一下,这次发出的请求是不是你期望的——比如方法是不是GET,端点地址对不对,请求头带没带正确的信息——如果不符你期望,甚至可以立马失败。第二,就是制造一个假的HttpResponse。
怎么制造呢?很简单,你new一个HttpResponse对象,然后给它设置状态码200,设置Content-Type头,再把你要返回的JSON字符串塞到body里,最后把这个响应对象返回出去。这样,一个假的外部服务响应就做好了。
接下来在测试方法里,我们怎么用这个模拟呢?在你的测试代码里,调用真正的方法之前,先写一句:Test.setMock,第一个参数是HttpCalloutMock.class,第二个参数就是你刚写的那个模拟类的实例。这样一来,后续所有对外部的HTTP调用,都会被这个模拟拦截下来,返回你设置好的假响应。这样你的代码就以为真的收到了外部系统的回复,测试就可以顺畅跑下去了。
总结一下,就三步:实现接口写模拟,设置假响应,测试方法里用Test.setMock绑定起来。是不是很简单?好,这一页就到这,我们继续下一部分。
关键词
Apex
Salesforce
Developer Guide