Created
July 19, 2018 15:50
-
-
Save SalesforceBobLightning/463d436ca3006c80d90b09ef3b92be0f to your computer and use it in GitHub Desktop.
Using Multiple Callouts in a Single Unit Test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @isTest | |
| public class TestClassWithMultipleCallouts { | |
| @isTest | |
| public static void testMethodMultipleCallouts(){ | |
| String contactResource = 'ContactsMock'; | |
| String invoiceResource = 'InvoicesMock'; | |
| StaticResourceCalloutMock contactMock = getStaticResourceCalloutMock(200, contactResource); | |
| StaticResourceCalloutMock invoiceMock = getStaticResourceCalloutMock(200, invoiceResource); | |
| Map<String, HttpCalloutMock> mocksMap = new Map<String, HttpCalloutMock>(); | |
| mocksMap.put('https://api.xero.com/api.xro/2.0/Contacts', contactMock); | |
| mocksMap.put('https://api.xero.com/api.xro/2.0/Invoices', invoiceMock); | |
| HttpCalloutMock mocks = new MultiRequestMock(mocksMap); | |
| Test.setMock(HttpCalloutMock.class, mocks); | |
| // act | |
| Test.startTest(); | |
| // make call out | |
| Test.stopTest(); | |
| // assert | |
| } | |
| private static StaticResourceCalloutMock getStaticResourceCalloutMock(Integer statusCode, String staticResourceName) { | |
| StaticResourceCalloutMock mock = new StaticResourceCalloutMock(); | |
| mock.setStaticResource(staticResourceName); | |
| mock.setStatusCode(statusCode); | |
| mock.setHeader('Content-Type', 'application/json'); | |
| return mock; | |
| } | |
| public class MultiRequestMock implements HttpCalloutMock { | |
| Map<String, HttpCalloutMock> requests; | |
| public MultiRequestMock(Map<String, HttpCalloutMock> requests) { | |
| this.requests = requests; | |
| } | |
| public HTTPResponse respond(HTTPRequest req) { | |
| HttpCalloutMock mock = requests.get(req.getEndpoint()); | |
| if (mock != null) { | |
| return mock.respond(req); | |
| } | |
| return null; | |
| } | |
| public void addRequestMock(String url, HttpCalloutMock mock) { | |
| requests.put(url, mock); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment