Apex-warum nicht die standard-controller-legen Sie die aktuelle Seite beim erstellen der controller (Unit-Test)

In Apex Unit-tests, warum nicht die MyConrtoller myCont = new MyController(StandardContoller); rufen Sie die aktuelle Seite?

Zum Beispiel, wenn ich auf dieser Seite:

<apex:page standardController="DB_Object__c" extensions="MyExtension">
  <apex:form id="detail_list">
    <apex:detail />
    <apex:actionStatus id="readStatus">
    <apex:facet name="start">
        Loading, please wait...
   </apex:facet>
    <apex:facet name="stop"><apex:outputPanel >
        <apex:commandButton action="{!readData}"
            value="Update Data"
            rerender="detail_list"
            status="readStatus"/>
        {!remainingRecords}</apex:outputPanel>
    </apex:facet>
   </apex:actionStatus>
   </apex:form>
</apex:page> 

Wenn meine unit-tests erstellt diese:

DB_Object__c dbObj = new DB_Object__c();
dbObj.Name = 'test';
dbObj.Setting = 'aSetting';
insert dbObj;
Test.setCurrentPageReference(Page.Demo);
ApexPages.StandardController sc = new ApexPages.StandardController(dbObj);
MyExtension myExt = new MyExtension(sc);

Warum ApexPages.currentPage().getParameters().get('id'); scheitern? Ich habe zu tun:

ApexPages.currentPage().getParameters().put('id',dbObj.id);

Was ist der Punkt der übergabe in das dbObj zu StandardController wenn es nicht irgendwas damit zu tun? Ist die Absicht, die Sie senden, wird ein leeres Objekt und die Erweiterung verwendet dieses Objekt? Es scheint nicht zu sein, eine Menge an Dokumentation für StandardControllers und Unit-Tests...

Dank!

InformationsquelleAutor rjbez | 2012-08-15
Schreibe einen Kommentar