System.currentPageReference().getParameters().get('hogehoge');をクラスで使用している場合のテストクラスの書き方です。
引数がきちんとしていないとカバレッジが確保できませんし、正しいテストが出来ませんね。
でもテストコードにURLパラメータをどうやって渡すのでしょうか。
メインのクラスのソースはこんな感じ。
-
public class SampleCls {
-
public Id sampleId{get;set;}
-
public PageReference init() {
-
sampleId = System.currentPageReference().getParameters().get('ParameterId');
-
//パラメーターを使った処理
-
return null
-
}
-
}
テストコード側には、setCurrentPageを入れることで引数を設定できます。
-
private class SampleCls_Test{
-
static testmethod void Test() {
-
System.Test.startTest();
-
PageReference pageRef = Sample_Page;//SampleClsをコントローラーに持つページ
-
//URLパラメータをセットします
-
pageRef.getParameters().put('ParameterId', 'aaaaaaaaaaaa');
-
//TestクラスのsetCurrentPageメソッドを使用してCurrentPageにパラメータを設定します。
-
Test.setCurrentPage(pageRef);
-
SampleCls cls;
-
cls.init();
-
System.test.stopTest();
-
}
-
}
これでテストクラスを実行するとURLパラメータが入った状態でクラスが実行されます。
その他のSalesforce記事
![](https://image.jimcdn.com/app/cms/image/transf/dimension=278x10000:format=jpg/path/scad6c294085881dc/image/id0c843f2866e6210/version/1581581751/image.jpg)
VisualforceでcommandButtonにrerender属性を設定して、 oncompleteにコールバック処理を記載したら動作してくれない。