· 

URLパラメータを使用している際のテストコードの書き方

System.currentPageReference().getParameters().get('hogehoge');をクラスで使用している場合のテストクラスの書き方です。

引数がきちんとしていないとカバレッジが確保できませんし、正しいテストが出来ませんね。

でもテストコードにURLパラメータをどうやって渡すのでしょうか。

 

メインのクラスのソースはこんな感じ。

 

  1. public class SampleCls {
  2.     public Id sampleId{get;set;}
  3.     public PageReference init() {
  4.         sampleId = System.currentPageReference().getParameters().get('ParameterId');
  5.         //パラメーターを使った処理
  6.         return null
  7.     }
  8. }

 

テストコード側には、setCurrentPageを入れることで引数を設定できます。

 

  1. private class SampleCls_Test{
  2.     static testmethod void Test() {
  3.         System.Test.startTest();
  4.         PageReference pageRef = Sample_Page;//SampleClsをコントローラーに持つページ
  5.         //URLパラメータをセットします
  6.         pageRef.getParameters().put('ParameterId', 'aaaaaaaaaaaa');
  7.         //TestクラスのsetCurrentPageメソッドを使用してCurrentPageにパラメータを設定します。
  8.         Test.setCurrentPage(pageRef);
  9.         SampleCls cls;
  10.         cls.init();
  11.         System.test.stopTest();
  12.     }
  13. }

 

これでテストクラスを実行するとURLパラメータが入った状態でクラスが実行されます。

 

その他のSalesforce記事


VisualforceでcommandButtonにrerender属性を設定して、 oncompleteにコールバック処理を記載したら動作してくれない。
Visualforceで生成したPDFが、Google Chromeで表示されない
項目履歴管理をデータローダで取得しようとしたらエラーが発生した。