2016-08-02 8 views
0

初心者ここに...あなたの忍耐力に感謝します。私は、次のコントローラのテストクラスを書くことに興味があるんだけど、わからないところを開始する方法:Apexテストクラス

public class savecontroller 
{ 
    private final Emp__c emps; 
    public savecontroller(ApexPages.StandardController controller) 
    { 
     this.emps= (Emp__c)controller.getRecord(); 
    } 
    public void autosave() 
    { 
     upsert emps; 
    } 
} 

は、この部分から...

答えて

0

あなたのコードは少し奇妙ですありがとう:

public savecontroller(ApexPages.StandardController controller) 

あなたのコントローラーは本当に「コントローラー」ではないようですが、Emp__cオブジェクトの標準コントローラーの拡張のような感じです。私は知っている、それはあなたの投稿に何の影響も及ぼしません(セマンティクスを除く)、BUT(!)あなたのテストクラスの書き方には影響します。これは拡張機能ですので、テストクラスは、次のようになります

@isTest 
public class saveconttroller_test { 

    public static Emp__c test_emp; // declaration 

    static { 
     test_emp = new Emp__c(); 
     insert test_emp; //since you have upsert you can leave this out 
    } 

    static testMethod void testsavecotroller() { 

     Test.startTest(); 
     //in the next two lines we contruct standard controller and the extension 
     ApexPages.StandardController sc = new ApexPages.StandardController(test_emp); 
     savecontroller ext = new savecontroller(sc); 
     ext.autosave(); 
     Test.stopTest(); 
    } 
} 

を今、私はいくつかのことを指摘してみましょう...最初、私はあなたが、テストは同じくらいのコードをカバーする必要があります知っていると確信しているとして、可能。 SFは75%を必要としますが、100%に近づくほど良くなります。しかし、(!)のように、あなたのメソッドが何をしているのかを判断するには、何かを含めるべきです。あなたのケースでは例えば、私はこのような方法の自動保存()に変更になります。そうすることによって

public PageReference autosave() 
    { 
     try { 
      upsert emps; 
      return new ApexPages.StandardController(test_emp).view(); 

     } catch(Exception e) { 
      return null;   
     } 
    } 

を、あなたはupsertionは、この成功したかどうref1のは、あなたが期待するの参照(あるwher、あなたのテストクラスでSystem.assertEquals(ref1, ref2);を含むことができ、 test_emp page referenceとなります)、ref2は実際にテストから取得したリファレンスになります。 もう1つは、テストでstaticメソッドを使用しています。このメソッドで書く内容は、常にTest.startTest();呼び出しで実行されます。

希望すると、これが役立ちます。 :) 乾杯、G

関連する問題