【Salesforce】テストクラスで処理を回避する

【Salesforce】テストクラスで処理を回避する

Apexでの開発を行っていると必要になるのがテストクラスですね。

リリースする際にApexテストのカバレッジが必要になるのでテストクラスを作成するわけですが、動かしたくない処理というものがありますね。

本番用の動作だったり、メール送信処理などが多いかと思います。

Apexテストでの動作かそうでないかを判別するメソッドがあるので、それを使うことで回避することが出来ます。

メール送信処理を例に出します。

Messaging.SingleEmailMessage message;
Messaging.SingleEmailMessage[] messageList;
Messaging.SendEmailResult[] resultList;

// 送信するメールを作成する
message = new Messaging.SingleEmailMessage();
message.toAddresses = new String[] { UserInfo.getUserEmail() };
message.subject = 'タイトル';
message.plainTextBody = '本文';

// 送信用メールリストを作成する
messageList = new List{message};

// テスト実行でない場合、メールを送信する
if(!Test.isRunningTest()){

    resultList = Messaging.sendEmail(messageList);
}

TestクラスのisRunningTestメソッドで、テスト実行かを取得しています。

https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_methods_system_test.htm#apex_methods_system_test

何かと便利なメソッドです。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です