You need to sign in to do that
Don't have an account?
Stefano Amenta
Test Class for Apex Batch with http callout
Hi,
I wrote a simple batch that deletes old reports by using the endpoint /services/data/v44.0/analytics/reports/ (which I stored in a custom label).
Now I'm struggling to write the test class code for the batch below.
Which code could I use to test my batch?
Thanks in advance.
I wrote a simple batch that deletes old reports by using the endpoint /services/data/v44.0/analytics/reports/ (which I stored in a custom label).
Now I'm struggling to write the test class code for the batch below.
Which code could I use to test my batch?
Thanks in advance.
global class DeleteOldReportsBatch implements Database.Batchable<sObject>, Database.AllowsCallouts { //Get the records to be deleted global Database.QueryLocator start(Database.BatchableContext BC) { String query = 'select id, FolderName from Report where LastRunDate <= LAST_N_DAYS:60 and FolderName = \'Public Reports\' '; return Database.getQueryLocator(query); } //Executes the deletion logic for reports records global void execute(Database.BatchableContext BC, List<Report> scope) { String url; for(Report r : scope) { Http h = new Http(); url = System.Label.ReportsApi + r.Id; System.debug(LoggingLevel.INFO, '*** url: ' + url); HttpRequest req = new HttpRequest(); req.setHeader('Authorization', 'Bearer '+ UserInfo.getSessionId()); req.setMethod('DELETE'); req.setEndpoint(url); HttpResponse res = h.send(req); System.debug(LoggingLevel.INFO, '*** rest: ' + res.getBody()); } } global void finish(Database.BatchableContext BC) {} }
You can refer https://salesforce.stackexchange.com/questions/241980/test-class-with-batch-and-callout. It may help you!
If not please let me know!
Regards,
Edanna.
All Answers
You can refer https://salesforce.stackexchange.com/questions/241980/test-class-with-batch-and-callout. It may help you!
If not please let me know!
Regards,
Edanna.
You have to specify the values of the fake response, instruct the Apex runtime to send this fake response by calling Test.setMock in your test method
global class YourHttpCalloutMockImpl implements HttpCalloutMock {
global HTTPResponse respond(HTTPRequest req) {
// Create a fake response.
// Set response values, and
// return response.
}
}
})
I suggest you go through this link, it will help you to understand
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha.