1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】HttpCalloutMock インターフェースの外部連携テスト

Posted at

Salesforce で外部システムと連携する際には、Apex の Http クラスを使用して HTTP コールアウトを行います。しかし、テスト環境では実際の外部システムにリクエストを送信できません。そのため、HttpCalloutMock インターフェースを実装することで、テスト時にモックレスポンスを返す仕組みを作成できます。

この記事では、HttpCalloutMock を使用した HTTP コールアウトのテスト方法を解説します。

1. HttpCalloutMock インターフェースとは?

HttpCalloutMock は、Apex における HTTP コールアウトをテストするためのインターフェースです。このインターフェースを実装することで、テスト環境で特定のレスポンスを返すように設定できます。

通常、Apex のテスト環境では実際の HTTP コールアウトが許可されていません。そのため、Test.setMock メソッドを使用して、HttpCalloutMock を適用し、あらかじめ決めたレスポンスを返すように設定する必要があります。

2. モッククラスの作成

まず、HTTP コールアウトを行うクラスを作成します。外部システムと通信するためのリクエストを構築し、HTTP レスポンスを取得する処理を含みます。

次に、HttpCalloutMock インターフェースを実装するクラスを作成します。このクラスでは、リクエストに対するモックレスポンスを返す処理を実装します。これにより、テスト環境で外部システムに依存せずに HTTP コールアウトの動作を確認できます。

HTTP コールアウトを行うクラスのサンプル

public class MyHttpCallout {
    public static String makeCallout() {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://example.com/api');
        request.setMethod('GET');
        HttpResponse response = http.send(request);
        return response.getBody();
    }
}

モッククラスのサンプル

@isTest
public class MyHttpCalloutMock implements HttpCalloutMock {
    public HTTPResponse respond(HTTPRequest req) {
        HttpResponse response = new HttpResponse();
        response.setStatusCode(200);
        response.setBody('{\"message\": \"Success\"}');
        return response;
    }
}

3. モックを使ったテストの実装

テストクラスのサンプル

@isTest
public class MyHttpCalloutTest {
    @isTest
    static void testCallout() {
        // モックを設定
        Test.setMock(HttpCalloutMock.class, new MyHttpCalloutMock());
        
        // テスト対象のメソッドを実行
        String response = MyHttpCallout.makeCallout();
        
        // 期待するレスポンスと比較
        System.assertEquals('{\"message\": \"Success\"}', response);
    }
}

テストクラスでは、Test.setMock を使用してモッククラスを適用します。その後、実際に HTTP コールアウトを行うメソッドを呼び出し、期待するレスポンスと比較することで、正しく動作するかを検証します。

4. まとめ

  • HttpCalloutMock インターフェースを実装することで、テスト環境でも HTTP コールアウトの動作を確認できます。
  • Test.setMock(HttpCalloutMock.class, モッククラスのインスタンス) を使用して、HTTP コールアウトのレスポンスを制御します。
  • モックを活用することで、外部サービスに依存せずに Apex のテストを実行できます。

この記事が少しでも参考になれば幸いです!

参考

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?