#salesforce #response #rest #sfdc
Вопрос:
Я пытаюсь получить плохую ошибку запроса,используя файл ниже .json, но я не получаю .Я хочу отправить этот ответ.
Например:
- ошибки проверки: { «Код состояния»:»400″, «идентификатор»:»», «ошибка»:»xxxx» } 2.Внутренняя ошибка сервера: { «Код состояния»:»500″, «идентификатор»:»», «ошибка»:»xxxx» }
Класс API Apex REST :
@RestResource(сопоставление URL = ‘/IoT_Случай_ _ c/*’)
глобальный с разделением класса IOT_CaseManager { глобальный класс ResponseWrapper{public String StatusCode; public String StatusMessage; public String ErrorMessage; public String ID; //public List<IoT_Case__c> Details; } @HttpPost global static ResponseWrapper createIOT_Case(String IOT_Case_Type, String Name,String Email,String Phone,String Facility_Name, String Address,String case_Reason,string Device_ID, String Date_time, String Pool_Name){ RestRequest request = RestContext.request; ResponseWrapper resp = new ResponseWrapper(); system.debug('%%%%%% the response is######' resp); List<IoT_Case__c> caseList = new List< IoT_Case__c> (); try{ IoT_Case__c Iot_case = new IoT_Case__c (); Iot_case.IOT_Case_Type__c=IOT_Case_Type; Iot_case.Name__c= Name; Iot_case.Email__c= Email; Iot_case.Phone__c= Phone; Iot_case.Address__c= Address; Iot_case.Pool_Name__c= Pool_Name; Iot_case.Device_ID__c= Device_ID; Iot_case.case_Reason__c=case_Reason; Iot_case.Facility_Name__c=Facility_Name; Iot_case.Date_time__c=Date.valueOf(Date_time); caseList.add(Iot_case); if (caseList.size() > 0){ List<IoT_Case__c> Iotcase_List = [SELECT ID,Name__c,case_Reason__c,Device_ID__c,IOT_Case_status__c from IoT_Case__c]; // system.debug('@@@@the value is amp;amp;amp;amp;amp;' Iotcase_List); For (Iot_case__c ic:Iotcase_List){ if ((ic.IOT_Case_status__c == 'Open'|| ic.IOT_Case_status__c == 'In -Progress') amp;amp; (ic.case_Reason__c == caseList[0].case_Reason__c amp;amp; ic.Device_ID__c == caseList[0].Device_ID__c)){ resp.errorMessage='Duplicate case'; system.debug('@@@@the value is amp;amp;amp;amp;amp;' resp.errorMessage ); } } if(resp.errorMessage!='Duplicate case'){ insert caseList; resp.statusCode ='201'; resp.statusMessage ='Success' ; } else{ resp.statusCode ='409'; resp.statusMessage ='Duplicate' ; } } } catch (Exception e) { system.debug('amp;amp;amp;amp;amp;amp;amp; The errro message is *****' e); if(e.getMessage().contains('Validation')) { resp.statusCode = '400'; resp.statusMessage = 'Exception : ' e.getMessage(); } if(e.getMessage().contains('Internal server error ')) { resp.statusCode = '500'; resp.statusMessage = 'Exception : ' e.getMessage(); } } string Outputget= JSON.serialize((caseList)); //resp.Details = caseList; resp.ID = caseList[0].Id; system.debug('@@@@@@the response id isamp;amp;amp;amp;amp;' resp.ID ); //resp.ErrorMessage= 'Exception ' ; return resp; } } json : { "IOT_Case_Type": "Equipment_Replacement", "Name": "test123", "Email": "test1@gmail.com", "Phone": "9086978010", "Address": "Chennai", "Pool_Name": "Pool-1", "Facility_Name": "Facility-1", "Device_ID" : "D1110" , "case_Reason" : "FAC Sensor Expired,ORP Sensor Expired,pH Sensor Expired", "Date_time": "2021-02-01T03:42:22Z" } endpoint Post url :/services/apexrest/IoT_Case__c/*
Ответ №1:
if(e.getMessage().contains('FIELD_CUSTOM_VALIDATION_EXCEPTION'))
{
resp.statusCode = '400';
resp.statusMessage = 'Exception : ' e.getMessage();
resp.ErrorMessage= 'Bad Request Exception' ;
}
else{
resp.statusCode = '500';
resp.statusMessage = 'Exception :' e.getMessage();
resp.ErrorMessage= 'Internal server Exception ' ;
}
Комментарии:
1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.
Ответ №2:
I need test class with 80% code coverage for above class .
I tried this but i am getting 58% code coverage only .
@isTest
Public class IOT_CaseManagerTest{
static testMethod void testDoPost(){
IoT_Case__c Iot_case = new IoT_Case__c();
Iot_case.IOT_Case_Type__c='Equipment_Replacement';
Iot_case.Name__c='';
Iot_case.Email__c='test1@gmail.com';
Iot_case.Phone__c='9573678567';
Iot_case.Address__c='Chennai';
Iot_case.Pool_Name__c='Pool-1';
Iot_case.Device_ID__c='CAS968878';
Iot_case.case_Reason__c='FAC Sensor Expired,ORP Sensor Expired,pH Sensor Expired';
Iot_case.Facility_Name__c='Facility-1';
Iot_case.Date_time__c=system.Today();
insert Iot_case;
Test.startTest();
IOT_CaseManager.createIOT_Case('Equipment_Replacement','sreenitest','test1@gmail.com','9573678567','Chennai','Pool-1','CAS968878','FAC Sensor Expired','Facility-1','8/25/2021');
Test.stopTest();
}
static testMethod void testPostMethod()
{
RestRequest request = new RestRequest();
request.requestUri ='/services/apexrest/IoT_Case__c/*';
request.httpMethod = 'POST';
RestContext.request = request;
IOT_CaseManager.createIOT_Case('Equipment_Replacement','sreenitest','test1@gmail.com','9997877','Chennai-2','Pool-1','CAS968898','FAC Sensor Expired','Facility-1','8/25/2021');
//System.assert(strId !=null );
}
}