function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
mocomoco 

拡張コントローラのテスト

はじめまして。
apex開発初心者です。

今回、拡張コントローラのテストに苦戦しております。
いろいろなサイトを参考の上、visualforceページをカレントページにしたり、標準コントローラ、拡張コントローラをインスタン化するテストはできました。

が、最後のsaveと次ページに移るテストの記述方法がわかりません。

saveは、標準のSaveメソッドを呼び、最後にまた別のvisualforceページに遷移したいと思っています。

どなたかご教授お願いいたします。



↓以下が未テスト部分です。
public PageReference save() {

controller.save();    //標準の Saveメソッド
PageReference prevPage = new PageReference('/apex/ABCpage'); 
return prevPage;

}


takahiro-yoneitakahiro-yonei
が、最後のsaveと次ページに移るテストの記述方法がわかりません。
  • Saveした結果、レコードがちゃんと更新されているか?
  • save() メソッドの戻り値である PageReference のURLが '/apex/ABCPage' になっているか?

を検証すれば良いではないでしょうか?

 

例えば、

(拡張コントローラ) testCon = new (拡張コントローラ);
....
PageReference moveTo = testCon.save();
System.assertEquals((保存したレコードのチェック));
System.assertEquals(moveTo.getUrl().contains('/apex/ABCPage'), true);

 みたいな感じで検証してみてはいかがでしょうか?

Kentaro OkanoKentaro Okano

初めまして、岡野と申します。


オブジェクト名や拡張コントローラクラス名がわからないので日本語で記述しましたが、

下記のようにテストしてみてはどうでしょう?

 

Apexpages.Standardcontroller sc = new Apexpages.Standardcontroller(オブジェクト);
拡張コントローラクラス p = new 拡張コントローラクラス(sc);

 

// TODO 以下、テストデータセット

// テスト開始
Test.startTest();
Pagereference pr = p.save();
System.AssertEquals('/apex/ABCpage', pr.getUrl());

 

// TODO テストデータが保存されているかどうかのアサーション
Test.stopTest();

 

実際にテストを実行したわけではないのでどこかで失敗するかもですが、ご参考程度に。

mocomoco

ありがとうございます。

 

2つともとても参考になりました!!

根本的なテストの考え方がわかりましたm(_ _)m