ApexクラスでHTTP Calloutsの処理を行っている場合、普通にテストクラスを作ろうとすると次のようなエラーが発生して処理がスキップされてしまいます。
HTTP Calloutsのテストクラスを作成するには"implements HttpCalloutMock"を宣言したクラスが必要になります。これを用意してテストクラス内で次ような宣言で呼び出すことで擬似的なHTTP Calloutsの結果を取得することができるとのことです。
Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
サンプルです。
"implements HttpCalloutMock"のクラスは@isTestを宣言することでApex 使用率の制限から除外することができます。
この方法でHTTP Calloutsの処理をスキップさせずにテストすることができます。
この方法の詳細についてはこちらです。
Testing HTTP Callouts by Implementing the HttpCalloutMock Interface
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_testing_httpcalloutmock.htm
HTTP Calloutsのテストを行う方法はもうひとつあります。
"implements HttpCalloutMock"のクラスを用意するのではなく静的リソースに用意して呼び出す方法です。
まず静的リソースにファイルをアップロードします。
ファイルの中身はおそらくこんな感じ
ファイル拡張子は.jsonだと思います。
静的リソースのMIMEタイプはapplication/jsonになる予定だったのですがうまくいきませんでした。
テストクラス内で次のように宣言して静的リソースからファイルを呼び出します。
StaticResourceCalloutMock mock = new StaticResourceCalloutMock();
これで"Test.setMock"を宣言できるようになります。
サンプルです。
これで一応テストクラスを通すことはできました。
ただMIMEタイプとかその他うまく行っていない感じのところがあるので、ちょっと間違えている箇所があるみたいです。
ひとまず静的リソースを使ったHTTP Calloutsはこんな感じになります。
この方法についての詳細はこちらになります。
Testing HTTP Callouts Using Static Resources
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_testing_static.htm
それとこちらも参考になりそうでした。
Testing HTTP Callouts with Static Data in Winter'13
http://blogs.developerforce.com/developer-relations/2012/10/testing-http-callouts-with-static-data-in-winter-13.html
HTTP Calloutsのテストは"implements HttpCalloutMock"と"静的リソース"の2種類の方法が用意されています。個人的には"implements HttpCalloutMock"の方が使いやすい気がしました。@isTestを宣言することで制限からも除外できるのも良いと思います。