You need to sign in to do that
Don't have an account?
HTTPResponseをテストが通れるようにできませんか?
こんにちは
ApexによるWebサービス呼び出しについてなのですが
例えば以下のようなクラスがあるとします。
public class test {
public static void main(String a, String b, String c){
//リクエスト作成
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setEndpoint('http:~~');
req.setHeader('Date',a);
req.setHeader('Security',b);
req.setBody(c);
Http http = new Http();
HTTPResponse res = http.send(req);
}
}
これをTestMethodを使用してテストをすると
「TestMethod として定義されたメソッドは、Web サービスコールアウトをサポートしないため、テストはスキップされます。」
と出てテストが中断されてしまいます。
また、developerforce.comの「Apexコードテストメソッドの概要」に載っている
「Web サービス処理を 3 つのメソッドに分割することで、ほとんどの Apex コードがテスト可能になります。」
と書かれたコードをまるごとコピーしてテストを実行しても
上記に書いたメッセージが出てテストが中断されます。
どうにかしてHTTPResponseをテストが通れるようにできませんか?
よろしくお願いします。
こちらが参考になりますでしょうか?
http://wiki.developerforce.com/index.php?title=Virtual_Callout_Testing
コメントありがとうございます。
載せていただいたサイトのコードを試してみましたが
やはりうまく動きませんでした。
私のやり方が悪いのでしょうか・・・
自己解決という形になるのでしょうか
TestMethodでもエラー時に止まらず実行出来るようにはできました。
try、catchでエラーを受け取ることができました。
public class test {
public static void main(String a, String b, String c){
//リクエスト作成
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setEndpoint('http:~~');
req.setHeader('Date',a);
req.setHeader('Security',b);
req.setBody(c);
Http http = new Http();
try{
HTTPResponse res = http.send(req);
} catch(Exception e){
}
}
}
このように囲むとエラーが出てもExceptionに行くため止まらずに処理が進みます。
ただ、これだとResponseでエラーが出ても進んでしまうため少し不安です。