[salesforce]Visualforceコントローラのテスト方法
Salesforceでは本番組織にAPEXコードをdeployするときに
75%以上のテストカバー率が必要になります。
75%よりテストカバー率が少ないと、エラーになりdeployができません。
APEXで作れるものは、トリガー、Visualforceコントローラ、クラス、と色々ですが
それぞれどんなテストコートを書けばいいのか、お作法に悩むことがあったりします。
そんななかの一つのVisualforceコントローラのテストコードの書き方はこんなかんじ。
リファレンスのサンプルコードを例に解説。
http://www.salesforce.com/us/developer/docs/pages/Content/pages_controller_error_handling.htm
[sourcecode language=”javascript”]
public class thecontrollerTests {
public static testMethod void testMyController() {
//テスト対象のページ名「success」のVisualforceページのオブジェクト化。テスト対象ページのカレントページ化。
PageReference pageRef = Page.success;
Test.setCurrentPage(pageRef);
//テスト対象Visualforceで使うコントローラのオブジェクト化
thecontroller controller = new thecontroller();
//コントローラのsaveメソッドのgetUrlを呼び出して、次ページの文字列を取得
String nextPage = controller.save().getUrl();
// 次ページ文字列が意図したものかどうかエラーチェック
System.assertEquals(‘/apex/failure?error=noParam’, nextPage);
// カレントページにパラメータを付けるチェック
ApexPages.currentPage().getParameters().put(‘qp’, ‘yyyy’);
// コントローラ内の全プロパティのsetterメソッドのテスト
controller = new thecontroller();
controller.setLastName(‘lastname’);
controller.setFirstName(‘firstname’);
controller.setCompany(‘acme’);
controller.setEmail(‘firstlast@acme.com’);
nextPage = controller.save().getUrl();
// Visualforceページ「success」が、次ページで意図したとおりきちんと表示されたかどうかチェック
System.assertEquals(‘/apex/success’, nextPage);
Lead[] leads = [select id, email from lead where Company = ‘acme’];
System.assertEquals(‘firstlast@acme.com’, leads[0].email);
}
}
[/sourcecode]