You need to sign in to do that
Don't have an account?
カスタム設定の値がテストの時だけ読み込めない!
カスタム設定に、性別コードを登録して使用しています。
入力時にはオプションボタンを使用し、
画面に表示する際には、getInstanceを使い、コードを名称に変換しています。
以下のコードで、lstオブジェクトのGender__c項目のを拾って、
カスタム設定CSGender__cのDispName__cの値を取得しているのですが、
テストメソッドからこのメソッドを呼び出したときにCSGender__cがnullでエラーになります。
public string getGenderName(){
string gn;
if(lst.Gender__c==null){
gn='' ;
}else{
gn=CSGender__c.getInstance(lst.Gender__c).DispName__c;
}
return gn;
}
画面を読み込む際には正しくDispName__cの値を表示しており、間違いなく動作していると
思うのですが、なぜテストでエラーになるのかわかりません。
試しに
CSGender__c.getInstance(’1’).DispName__c
のように、lst.Gender__cの部分を固定値で試しても取得できませんでした。
どうか、ご教授宜しくお願いします。
先のコメントだけでは、情報が不足していると思いますので、追加します。
テストコードはこのように書きました。
コントローラはオブジェクトList__cの拡張コントローラを使用しています。
public static testMethod void testGender(){
List<List__c> testList = new List<List__c>();
testList.add( new List__c(Name1__c = 'dmyName',SelFlg__c=true,Gender1__c='1') );
insert testList;
ListExtension ctrl = new ListExtension(new ApexPages.StandardController(testList[0]));
string sel=ctrl.getGenderName();
System.assertEquals(sel,'男');
}
帰ってくるエラーは、
FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object
です。
以上、宜しくお願いいたします。
自己解決しました。
アノテーションを以下のようにすることで、読み取ることができました。
@isTest(SeeAllData=true)
こちらのボードに解決策が記載されていました。
http://boards.developerforce.com/t5/Apex-Code-Development/getting-NULL-from-Custom-Settings-in-Test-class/m-p/406555#M73283
お騒がせいたしました。