クラス
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();
}
}