こんにちは、アンダーソンです。
今回はMockを使ったテストクラスで少しハマった案件があったので
そのことについて書いていきます。
一度に複数呼び出しするクラスの場合
今回クラス内でPOSTしてからサービスからトークンなどを取得して、
その内容で再度GETをするためにコールアウトするという内容なんですが、
普通にMockテストクラスを用意してしまうと、
どちらかの呼び出しの際に返却される値が違うため
エラーになってしまう可能性があります。
でこの時のMockクラスの書き方なんですが、
ものすごく簡単な方法で2種類の呼び出しに対応したものを作成できます。
global class TestClassResponce implements HttpCalloutMock {
global HttpResponse respond(HttpRequest req){
HttpResponse res = new HttpResponse();
if (req.getMethod() == 'GET') {
res.setHeader('Content-type', 'application/json');
res.setBody('{"Test":"test"}');
res.setStatusCode(200);
return res;
} else {
res.setHeader('Content-Type', ''application/json;charset=UTF-8'');
res.setBody('{"name":"TestName"}');
res.setStatusCode(200);
return res;
}
}
}
req.getMethod()でメソッドの種類を取得できるので、
GETなのかPOSTなのかを判別することができます。
それによって返却する値を変えることでコードをカバーすることができます。
めっちゃ簡単なことなんですが、自分自身、複数呼び出しのクラスのテストを
書いたのが初めてだったので備忘録として残しておきます。