You need to sign in to do that
Don't have an account?
JoshTonks
Test Class Help With RestAPiCallout
Hi,
Would anybody please be able to give me assistance on this.
Ive written difference test classes before for different things but i dont know how to do this one. It sends a json api call out to an external service
Do i need to write a mock httpcallout method for this and will i need to run a record create testmethod for this so it can find the object
Thanks in advance
Would anybody please be able to give me assistance on this.
Ive written difference test classes before for different things but i dont know how to do this one. It sends a json api call out to an external service
public class RAMAssistSetup { @InvocableMethod(label='RAM Assist Setup ' description='This sets up ram assist') public static void RAMAssistSetup(List<Id> FleetAssist) { List<Fleet_Assist__c> RFA =[Select Id from Fleet_Assist__c where id in :FleetAssist ]; System.enqueueJob(new RestApiCall(FleetAssist)); } public class RestApiCall implements System.Queueable, Database.AllowsCallouts { List<Id> RFA = new List<Id>() ; public RestApiCall(List<Id> ids){ RFA = ids ; } public void execute(System.QueueableContext ctx) { Fleet_Assist__c FA = [Select Id ,Contact_Email__c,Company__c,Contact_Full_Name__c,Company_Name_Text__c,Contact_Telephone__c,fm_Licenses__c,fm_Address__c from Fleet_Assist__c where id = :RFA limit 1] ; JSONGenerator gen = JSON.createGenerator(true); gen.writeStartObject(); gen.writeStringField('email',FA.Contact_Email__c); gen.writeStringField('sfId',FA.Company__c); gen.writeStringField('name',FA.Contact_Full_Name__c); gen.writeStringField('companyName',FA.Company_Name_Text__c); gen.writeStringField('tel',FA.Contact_Telephone__c); gen.writeStringField('address',FA.fm_Address__c); gen.writeStringField('licenses',FA.fm_Licenses__c); gen.writeEndObject(); String jsonS = gen.getAsString(); System.debug('jsonMaterials'+jsonS); // Sending the http body with JSON String endpoint = 'https://api.xxxxxxxx.com/xxxxxx'; HttpRequest req = new HttpRequest(); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('Content-Type','application/json;charset=UTF-8'); req.setbody(jsonS); Http http = new Http(); HTTPResponse response = http.send(req); // Parse the JSON response if (response.getStatusCode() != 200) { System.debug('The status code returned was not expected: ' + response.getStatusCode() + ' ' + response.getStatus()); } else { System.debug(response.getBody()); } } } }Im assuming looking at it there are 2 test classes for it one for the top section and then one for the restapicall.
Do i need to write a mock httpcallout method for this and will i need to run a record create testmethod for this so it can find the object
Thanks in advance
https://trailhead.salesforce.com/en/content/learn/modules/apex_integration_services/apex_integration_webservices
https://trailhead.salesforce.com/en/content/learn/modules/asynchronous_apex/async_apex_queueable#Tdxn4tBK-heading2