Test Classes For Future Methods (Callout True)

Test Classes For Future Methods (Callout True)

Wondering how to write Test class for Apex Classes/Methods which has Callout=true, here we go

Actual Class

public class exampleClass {        
    @future(callout=true)
    public static void sampleMethod(String param){
         ......Code goes here........
    }
}

Create a global Test Class

1 . Create a global test class which implements HttpCalloutMock as shown, this is like helper test class which will used in acutal Test class

@isTest
global class ExampleCalloutMock implements HttpCalloutMock{
    global HttpResponse respond(HTTPRequest req){
        HttpResponse res = new HttpResponse();
        res.setStatus('OK');
        res.setStatusCode(200);
        res.setBody('GREAT SCOTT');
        return res;
    }
}

2 . Create actual Test Class for your Apex Class

@isTest
private class exampleClass_Test {    
    static Account getTestAccount(){
        Account myAcc = new Account(Name = 'Test');
        insert myAcc;
        return myAcc;
    }
    
    private static testMethod void callFutureMethod() {        
        Account a = getTestAccount();
        
        Test.startTest();
        Test.setMock(HttpCalloutMock.class, new ExampleCalloutMock());
        exampleClass.sampleMethod(a.Id, 'Test Text using future Call out', userinfo.getUserId(), userinfo.getSessionId());    
        // exampleClass is which we created in STEP 1, and invoking its method
        Test.stopTest();
        
    }
}

That's it invoke your webservice/callout methods under Test.startTest(); & Test.stopTest();, in between use Test.setMock(HttpCalloutMock.class, new ExampleCalloutMock()); followed your method

Need any help please comment below

Thanks,

Subscribe to Phanindra Mangipudi

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe