CallOut

  • クラス

    public class ItemCreateHttpCallout {
    
    // コンストラクタ
    public ItemCreateHttpCallout() {
    }
    
    //このメソッドを非同期実行するために、@futureを記述
    @future(callout=true)
    public static void callout(String JSON) {
        System.debug('JSON : ' + JSON);
        wait(3000);
        //HTTPリクエストの作成
        Http http = new Http();
        HttpRequest req = new HttpRequest();
        req.setEndpoint('https://example.com/Prod/hello');
        req.setMethod('POST');
        req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.setHeader('Content-Type', 'application/json');
        req.setHeader('Accept', '*//*');
        req.setHeader('Accept-Encoding', 'gzip, deflate');
        req.setHeader('Accept-Language', 'ja-JP');
        req.setBody(JSON);
        HttpResponse res = http.send(req);
        System.debug(res.getBody());
    
        //レスポンスチェック
        if (res.getStatusCode() == 200) {
            //コールアウト成功
        } else {
            System.debug('Callout failed: ' + res);
        }
    }
    }
  • テストクラス

    @isTest(SeeAllData=false)
    private class ItemCreateHttpCalloutTEST {
    @testSetup
    static void setup() {
        System.debug('testMethod : setup');
    }
    
    public class ExampleCalloutMock2 implements HttpCalloutMock{
        public HttpResponse respond(HTTPRequest req){
            HttpResponse res = new HttpResponse();
            res.setStatus('OK');
            res.setStatusCode(200);
            String body = 'TEST';
            res.setBody(body);
            return res;
        }
    }
    
    static testMethod void Test01(){
    
        Test.startTest();
        Test.setMock(HttpCalloutMock.class, new ExampleCalloutMock2());
    
        JSONGenerator gen = JSON.createGenerator(true);
        gen.writeStartObject();
        gen.writeStringField('BBSecToken', 'abcdefg');
        gen.writeEndObject();
    
        ItemCreateHttpCallout.callout(gen.getAsString());
        Test.stopTest();
    }
    }