+ Start a Discussion
citydivercitydiver 

カスタム設定の値がテストの時だけ読み込めない!

カスタム設定に、性別コードを登録して使用しています。

入力時にはオプションボタンを使用し、

画面に表示する際には、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の部分を固定値で試しても取得できませんでした。

 

どうか、ご教授宜しくお願いします。

citydivercitydiver

先のコメントだけでは、情報が不足していると思いますので、追加します。

 

テストコードはこのように書きました。

コントローラはオブジェクト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

です。

以上、宜しくお願いいたします。

citydivercitydiver

自己解決しました。

アノテーションを以下のようにすることで、読み取ることができました。

@isTest(SeeAllData=true)

 

こちらのボードに解決策が記載されていました。

http://boards.developerforce.com/t5/Apex-Code-Development/getting-NULL-from-Custom-Settings-in-Test-class/m-p/406555#M73283

 

お騒がせいたしました。