Salesforce Apex 测试简单 Webhook 的代码覆盖率问题

问题描述

我是 Salesforce 的新手,一直在为一些 webhooks 编写测试 - 一个作为按钮,一个在机会创建时触发。

目标:通过 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,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);
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)