この記事では、以下のことについて記述しています。
- コントローラクラスの Apex テストでの特有の書き方
- コントローラクラスの Apex テストのサンプルコード
コントローラクラスをテストするときのポイント
コントローラクラスのテストは他の Apex テストと基本的には同じですが、以下のようなページに関する情報の設定・確認などは特有の部分です。
- 現在のページを指定する
- URLのクエリ文字列を設定する
- ページ遷移先のURLを確認する
このようなページに関する情報を扱う時は、PageReference クラスを用います。
getUrl() でページのURLを取得したり、getParameters().put() でURLにクエリ文字列を設定したりすることができます。
また、Test.setCurrentPage(pageReference) で、現在のページ情報をセットすることができます。
カスタムコントローラのテスト例
@isTest
public class thecontrollerTests {
public static testMethod void testMyController() {
// success という名前のページへの参照をインスタンス化
PageReference pageRef = Page.success;
// 現在のページ情報をセット
Test.setCurrentPage(pageRef);
thecontroller controller = new thecontroller();
// save() は pageReference を返すメソッド
// getUrl() でページのURLを取得
String nextPage = controller.save().getUrl();
System.assertEquals('/apex/failure?error=noParam', nextPage);
// URLにクエリ文字列を設定する(.../?qp=yyyy のようになる)
ApexPages.currentPage().getParameters().put('qp', 'yyyy');
nextPage = controller.save().getUrl();
System.assertEquals('/apex/success', nextPage);
}
コメント