testing - 简单 Webhook 的 Salesforce Apex 测试代码覆盖率问题
问题描述
我是 Salesforce 的新手,一直坚持为一些 webhook 编写测试 - 一个作为按钮,一个在机会创建时触发。
目标:通过 Webhook 测试(我已经在沙箱中手动测试了很多次,两个 webhook 都可以工作)。
问题:是否有一个或两个非常简单的测试可以证明 webhook 可以正常工作,所以我可以通过这个测试?
Apex Trigger 1:(按钮按下触发)
trigger WebhookTrigger on CustomObject (after insert) {
String url = 'https://webhook.sample.com';
String content = Webhook.jsonContent(Trigger.new, Trigger.old);
Webhook.callout(url, content);
}
Apex Trigger 2:(机会创造触发)
trigger opportunityCreatedTrigger on Opportunity (after insert) {
String url = 'https://webhook.sample1.com';
String content = Webhook.jsonContent(Trigger.new, Trigger.old);
Webhook.callout(url, content);
}
Apex 类:Webhook:
public class Webhook implements HttpCalloutMock {
public static HttpRequest request;
public static HttpResponse response;
public HTTPResponse respond(HTTPRequest req) {
request = req;
response = new HttpResponse();
response.setStatusCode(200);
return response;
}
public static String jsonContent(List<Object> triggerNew, List<Object> triggerOld) {
String newObjects = '[]';
if (triggerNew != null) {
newObjects = JSON.serialize(triggerNew);
}
String oldObjects = '[]';
if (triggerOld != null) {
oldObjects = JSON.serialize(triggerOld);
}
String userId = JSON.serialize(UserInfo.getUserId());
String content = '{"new": ' + newObjects + ', "old": ' + oldObjects + ', "userId": ' + userId + '}';
return content;
}
@future(callout=true)
public static void callout(String url, String content) {
if (Test.isRunningTest()) {
Test.setMock(HttpCalloutMock.class, new Webhook());
}
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint(url);
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
req.setBody(content);
h.send(req);
}
}
解决方案
推荐阅读
- amazon-dynamodb - AWS AppSync 未从 DynamoDB 返回所有记录
- asp.net - 如何在本地对 asp.net 应用程序进行负载/压力测试?
- node.js - 从任何服务器运行 Web 浏览器
- javascript - 将事件监听器添加到索引元素
- html - 字体粗细和字体大小不能一起工作
- android - 二进制 XML 文件第 22 行:错误膨胀类 ImageView 仅在根设备上由 android.content.res.Resources$NotFoundException 引起
- linux - 无法使用动态 udp/tcp 端口阻止 ubuntu 20.x 中的应用程序
- c++ - 接口如何返回未知类型?
- javascript - 如何按顺序执行Node JS函数
- java - 无法调用由 MethodValidationPostProcessor 代理的模拟方法 verify()