Тестирование веб-службы Salesforce - PullRequest
0 голосов
/ 23 сентября 2018

Вот код вспомогательной функции

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 для вызова URL-адреса конечной точки, а URL-адрес конечной точки - веб-служба, и он просто возвращает 200 послевремя ожидания, указанное в параметре.

Теперь вопрос в том, что мне нужно написать контрольный пример, чтобы охватить этот метод, и я не знаю, как его написать .. Я не знаю, как издеватьсяhttpcallout правильно, потому что этот метод не возвращает HttpResponse, и, поскольку код прямо сейчас заморожен, я не могу изменить свой класс, чтобы заставить тестовый пример работать.

Так что любым другим способом я могу создать тестовый классдля этого метода?

1 Ответ

0 голосов
/ 23 сентября 2018

Вы определенно должны иметь возможность использовать стандартный Http Callout Mock:

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...