2016-08-02 32 views
0

Neuling hier ... Vielen Dank für Ihre Geduld. Ich bin daran interessiert, eine Test-Klasse für die folgenden Controller in schriftlicher Form, aber nicht sicher, wo man anfangen soll:Apex Test Klasse

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

Danke

Antwort

0

Ihr Code ist ein wenig seltsam ... Von diesem Teil:

Es sieht so aus, als ob Ihr Controller nicht wirklich ein "Controller" ist, sondern eher eine Erweiterung eines Standard-Controllers für Emp__c-Objekte. Ich weiß, es beeinflusst nichts in Ihrem Beitrag (außer vielleicht Semantik), ABER (!) es hat einen Einfluss darauf, wie Sie Ihre Testklasse schreiben. Da dies eine Erweiterung ist, würde Testklasse wie folgt aussehen:

@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(); 
    } 
} 

Nun lassen Sie mich ... ein paar Dinge zuerst darauf hin, wie ich bin sicher, dass Sie wissen, sollten Test so viel Code abdecken, wie möglich. SF benötigt 75%, aber je näher Sie an 100% kommen, desto besser. Aber (!) sollten Sie immer etwas hinzufügen, wenn Ihre Methode das tut, was sie tun soll.

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

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

so Dadurch, Sie System.assertEquals(ref1, ref2); in Ihrer Testklasse umfassen, wher ref1 Referenz Sie erwarten würden (wenn der upsertion erfolgreich war: zum Beispiel in Ihrem Fall würde ich Methode die automatische Speicherung() wie folgt ändern wäre test_emp Seitenverweis) und ref2 wäre die Referenz, die Sie tatsächlich aus dem Test erhalten. Das zweite Ding verwendet static Methode im Test. Was immer Sie in dieser Methode schreiben, wird immer unter Test.startTest(); ausgeführt.

Hoffe das hilft dir! :) Prost, G.