Visualforceページコントローラのテストの書き方(拡張コントローラー使用・パラメータ付き)

   

最近Apexを使って色々と書いているのだが、Visualforceページでダッシュボード的なものを作ったときのテストの書き方がよくわからなかった。

ダッシュボードはパラメータを受け取ってそのパラメータによって表示内容を変更するようなもの。

テストコードはこんな感じ。

pageRef.getParameters().put('id', 'a1O1000000xxxxx');これをつけると、VisualforceページにURLパラメータをつけた状態になるようだ。

@isTest
public class 拡張コントローラー名_Test {
@isTest(SeeAllData=true) // 使うデータが複雑な為、予めデータを投入しておいてテストしていますが、そうでない場合はデータ投入してそれを使うべき
static void testMethod1() {
// 1.コントローラを利用するvisualforceページをテスト実行時の画面として設定
PageReference pageRef = Page.ページ名; //ページ名にはVisualforceページのページ名を入れる
pageRef.getParameters().put('id', 'a1O1000000xxxxx'); //今回はカスタムオブジェクトのIDをURLに入れて使っていたのでそのデータのパラメータをIDに指定して入れた
Test.setCurrentPage(pageRef);

// 2.画面で操作するオブジェクトを生成
カスタムオブジェクト名__c obj = new カスタムオブジェクト名__c();
obj = [SELECT Id,Name,OwnerID,Visualforceページの表示に必要な項目をここで指定 FROM MyReport__c WHERE ID = 'a1O1000000xxxxx'];

// 3.標準コントローラを生成
// オブジェクトを渡してインスタンス化する
ApexPages.StandardController stdController = new ApexPages.StandardController (obj);

// 4.コントローラ拡張を生成
// 標準コントローラを渡してインスタンス化する
拡張コントローラー名 extController = new 拡張コントローラー名(stdController);

}
}

これで拡張コントローラのテストが通りました。

おすすめ記事一覧

 - Salesforce