[salesforce]Visualforceコントローラのテスト方法

By |8月 13, 2009|salesforce, |


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]