【问题标题】:Salesforce: APEX Test Class for Web ServiceSalesforce:Web 服务的 APEX 测试类
【发布时间】:2015-11-19 08:55:46
【问题描述】:

我创建了一个基本的前端,它通过公共访客用户和网络服务调用深入到我的 force.com 数据中。本质上,代码请求用户可以选择的各种项目的费率(也称为成本)(第 10 行)。一切都按预期在沙盒上运行。但是,由于 Web 服务调用,我一直在编写一个测试类,令人惊讶的是,我以前从未与 force.com 一起使用过。

我的具体问题是如何在测试类中填充通常作为 URL 字符串的一部分出现的详细信息(第 7 行和第 8 行)?除了那个特定的问题之外,我认为这是相当常规的问题,我知道如何为此构建测试类。任何意见将不胜感激。

我正在尝试为以下代码创建一个 APEX 测试类:

@RestResource(urlMapping='/rowsrate')
global class ROWSRate {
    @HttpGet
    global static void doGet(){ // grabs the Rate (cost) information for the provided Resource Type, ie Police Officer and returns a JSON object
        String callback = RestContext.request.params.get('callback');

        Date endDateParam = Date.parse(RestContext.request.params.get('enddate')); // transmute string parameter to date on the fly
        String resourceName = RestContext.request.params.get('resctype');

        List<ROWS_RateRange__c> resourceTypeList = [select Cost__c, Rate__r.Name from ROWS_RateRange__c where LookupName__c = :resourceName and Start_Date__c <= :endDateParam and End_Date__c >= :endDateParam];

        RestResponse res = RestContext.response;
        res.addHeader('Content-Type', 'application/javascript');
        res.responseBody = Blob.valueOf(callback + '(' + JSON.serialize(resourceTypeList) + ')');
    }
}

PS 我已经在谷歌上搜索了相当多的内容,但发现的大多是古代物品。也许我今天的 Google 技能已经失效了。

【问题讨论】:

    标签: salesforce apex test-class


    【解决方案1】:

    你需要看HttpCalloutMock接口。

    【讨论】:

      【解决方案2】:

      这是我最终构建的用于测试上述内容的类。全面覆盖。

      @isTest
      private class ROWSRateTest {      
          static testMethod void testGoodRate(){
          RestRequest req = new RestRequest(); 
          RestResponse res = new RestResponse();
      
          req.requestURI = '/services/apexrest/rowsrate';  
      
          //creating test Rate & RateRange
          ROWS_Rate__c testRate = ROWSDataFactoryTest.createROWSRatewithRange();
          ROWS_RateRange__c testRateRange = [Select id, Cost__c from ROWS_RateRange__c where Rate__c =: testRate.Id];
      
          req.addParameter('callback', 'test');
          // fake the passed parameters
          req.addParameter('enddate', '06/30/2015');
          req.addParameter('resctype', 'isTest Rate');
          req.httpMethod = 'GET';
          RestContext.request = req;
          RestContext.response = res;
      
          Test.startTest();
          ROWSRate.doGet();
          Test.stopTest();
          String testBlob = res.responseBody.toString();
      
          System.assert(testBlob.contains(testRate.Name));
          system.assert(testBlob.contains(testRateRange.Cost__c.format()));
      }
      // I'm not sure what else we could test since it's a pretty basic class
      }
      

      【讨论】:

        猜你喜欢
        • 2021-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 2020-12-29
        • 2018-04-18
        相关资源
        最近更新 更多