Visualforceカスタムコントローラのテストクラス作成方法

white clouds Apex
Photo by Magda Ehlers on Pexels.com

この記事では、以下のことについて記述しています。

  • コントローラクラスの 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);
}

コメント

タイトルとURLをコピーしました