当前位置: 首页 > 知识库问答 >
问题:

Salesforce测试web服务调用

严玉泽
2023-03-14

下面是一个helper函数的代码

public class SalesforceHelper {
    public static void waitCall(String timeout){
        System_Settings__c lnpSetting = System_Settings__c.getValues('System Properties');
        String endpoint=lnpSetting.Base_Endpoint_URL__c + 'salesforceHelper/wait?timeout=' + timeout;
        system.debug('====endpoint======'+endpoint);
        HttpRequest httpReq=new HttpRequest();  
        HttpResponse httpResp = new HttpResponse(); 
        Http http = new Http();
        httpReq.setMethod('GET'); 
        httpReq.setEndpoint(endpoint);
        String username=lnpSetting.Endpoint_Username__c;
        String password=lnpSetting.Endpoint_Password__c;    
        Blob headerValue = Blob.valueOf(username + ':' + password);
        String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue); 
        httpReq.setHeader('Authorization', authorizationHeader); 
        httpReq.setHeader('content-type','application/json; charset=utf-8');
        httpReq.setTimeout(120000);
        try{
            httpResp = http.send(httpReq);
            System.debug('Wait response' + httpResp);
        } catch (Exception e) {
            system.debug(LoggingLevel.Error, 'Error HTTP response code = ' + httpResp.getStatusCode() + '; calling '+endpoint );
        }
    }
}

基本上,此方法只需使用HttpRequest和HttpResponse调用endpointURL,endpointURL是web服务,在参数中指定的超时之后,它将只返回200。

现在的问题是,我需要编写一个测试用例来涵盖这个方法,但我不知道如何编写它。。我不知道如何正确模拟httpcallout,因为此方法不返回HttpResponse,而且由于代码现在已冻结,我无法修改类以使测试用例正常工作。

那么有没有其他方法可以为这个方法创建测试类?

共有1个答案

丌官昊天
2023-03-14

您绝对应该能够使用标准的Http Callout模拟:

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm

唯一的区别是您只设置统计代码:

// Create a fake response
HttpResponse res = new HttpResponse();
res.setStatusCode(200);
return res;

并检查响应代码:

System.assertEquals(200, res.getStatusCode());
 类似资料:
  • 问题内容: 我的组织正在努力在JBoss应用服务器上构建RESTful Web服务。迄今为止,QA团队已使用SoapUI来测试SOAP Web服务。SoapUI具有具有REST功能的新版本。我们正在考虑使用它。 网上是否有任何可以免费测试的可公开获得的RESTful服务? 有哪些工具可用于测试RESTful Web服务? 问题答案: soapUI也可以完成这项工作,请查看此博客文章以开始使用。

  • 11.4. 调试 HTTP web 服务 首先, 让我们开启 Python HTTP 库的调试特性并查看网络线路上的传输过程。 这对本章的全部内容都很有用, 因为你将添加越来越多的特性。 例 11.3. 调试 HTTP >>> import httplib >>> httplib.HTTPConnection.debuglevel = 1 >>> import urll

  • 我创建了一个RESTful web服务(C#,WCF),它实现了以下接口: 其中,Test()方法只返回给定的内容(或默认的Test字符串)以及调用该方法时的时间戳。 该服务是公开可用的,因此当我在任何浏览器中输入url时: 它返回json字符串(或任何可能使用在末尾)。 我希望Salesforce将数据发布到此Web服务。 我的apex类看起来是这样的-当在Salesforce中插入一个对象时会

  • 像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。

  • 我一直试图找出Web服务标注的测试类。我有四个不同的类。它包含所有参数以及字段的所有信息和匹配。我有一个类,我有一个和。 在中,整个HTTPRequest和标注在我调用类的地方进行处理,然后从触发它。 现在的困难是测试类,因为我不是一个有经验的开发人员。 我将如何管理此代码的测试类(我已经进行了更改,以防它是一些重要信息)? 下面是API\U成员类 下面是API\U响应类

  • 我正在努力增加我在Android上的代码覆盖率。但我找不到测试这个演示者的正确方法。onSelectContact会进行一个服务调用,随后my ServiceFactory.GetContactService会进行另一个调用。我怎么能嘲笑这些电话呢?