Skip to main content

Latest Post

Custom Metadata Types vs Custom Settings vs Custom Labels

  Custom Metadata Types vs Custom Settings vs Custom Labels 💬 In plain words:  Three lookalikes: Custom Metadata = configuration that DEPLOYS with your code (best for app settings). Custom Settings = org/user-specific values, changeable at runtime (hierarchy type is great for bypass switches). Custom Labels = translatable text for the UI. 📌 Example:  API endpoint URLs per environment → Custom Metadata (deploys with code, sandbox vs prod values). A 'Bypass_Automation__c' checkbox an admin flips during data load → hierarchy Custom Setting. The word 'Submit' translated to Hindi → Custom Label. 🎬 Real-Life Example: The Fee Table Trapped Inside Code  Skyline charges a different delivery fee per city. Apex needs those rates on every booking. The Old/Bad Way:  if (city == 'Delhi') fee = 50. Else if (city == 'Mumbai') fee = 65. … Every rate change is a code change, a test run, and a deployment. Why this is bad:  Business data is trappe...

Apex Full Code Examples for HTTPMock in Test Classes

Introduction

In the world of Salesforce development, creating robust and efficient test classes is crucial to ensuring the quality and stability of your code. One essential aspect of testing is mocking HTTP requests, which allows you to simulate external API calls without actually making network requests during your tests. In this blog post, we'll dive into using the HTTPMock framework in Salesforce Apex to write comprehensive test classes for HTTP callouts.


HTTP Callouts in Apex


Salesforce developers often need to interact with external APIs or services to exchange data. HTTP callouts facilitate this communication, but incorporating them into your test classes can be tricky. Making actual HTTP requests in tests can lead to issues related to data consistency, network connectivity, and test execution time. That's where HTTPMock comes to the rescue.


Getting Started with HTTPMock


HTTPMock is a powerful framework provided by Salesforce that allows you to simulate HTTP requests and responses in test classes. It enables you to mock the behavior of external services, ensuring that your code behaves as expected without actually making real network requests.


Here's how to get started with HTTPMock:


1. Implement the HttpCalloutMock interface: Create a class that implements the HttpCalloutMock interface. This class will be responsible for generating mock responses for your HTTP requests.


2. Configure the Test: In your test class, set up the HTTPMock to return predefined responses for specific request URLs.


3. Write Test Methods: Write test methods that execute your code's HTTP callout logic. During these tests, the HTTPMock framework will intercept the requests and provide the mock responses you've configured.


Code Examples


Let's walk through an example of using HTTPMock in a test class for an Apex class that makes an HTTP callout to a fictional external weather API to retrieve weather data based on a given location.


@isTest

public class WeatherServiceTest {

    @isTest

    static void testWeatherCallout() {

        // Create a mock response

        HttpCalloutMock mock = new WeatherHttpMock();

        mock.setResponse('{"temperature": "25°C", "condition": "sunny"}');

        Test.setMock(HttpCalloutMock.class, mock);


        // Call the method that makes the HTTP callout

        WeatherService service = new WeatherService();

        String weatherInfo = service.getWeather('San Francisco');


        // Perform assertions

        System.assertEquals('Temperature: 25°C, Condition: sunny', weatherInfo);

    }

}


// HTTPMock implementation

public class WeatherHttpMock implements HttpCalloutMock {

    public HttpResponse respond(HttpRequest request) {

        HttpResponse response = new HttpResponse();

        response.setHeader('Content-Type', 'application/json');

        response.setBody('{"temperature": "20°C", "condition": "cloudy"}');

        response.setStatusCode(200);

        return response;

    }

}


Conclusion


Using HTTPMock in your Salesforce Apex test classes enables you to thoroughly test your HTTP callout logic without relying on actual network requests. By simulating different scenarios and responses, you can ensure that your code handles various situations gracefully. This approach enhances the reliability and maintainability of your codebase, leading to a more stable application overall. So, the next time you need to test Apex code that involves HTTP callouts, remember to leverage the power of HTTPMock for comprehensive and efficient testing.

Popular Posts

Salesforce LWC Code for Multi-Select Lookup

Introduction: In Salesforce Lightning Web Components (LWC), implementing a multi-select lookup field can enhance the user experience and provide greater flexibility for selecting multiple related records. In this blog post, we will walk through the process of creating a multi-select lookup field using LWC. We will cover the required code snippets and provide step-by-step instructions to help you implement this functionality in your Salesforce org.