Einfache ZF2-Einheit Testet eine Steuerung, die ZfcUser verwendet

8

Ich habe Probleme, eine Aktion zu testen, die ZfcUser für die Authentifizierung verwendet. Ich brauche eine Möglichkeit, das ZfcUser Controller-Plugin nachzuahmen, aber ich bin mir nicht sicher, wie ich das machen soll. Es ist mir gelungen, einige Komponententests für Tabellen und Modelle erfolgreich durchzuführen, aber der Controller benötigt viele injizierte Objekte und verursacht Probleme. Kann jemand die ZfcUser Mocks einrichten, um einen Controller erfolgreich Unit-Test zu testen?

Hier ist mein Test (kopiert vom ZF2 Tutorial):

%Vor%

Ich habe folgendes in der setUp-Methode versucht:

%Vor%

Aber ich bin mir nicht sicher, wie ich das in die Controller-Instanz einspeise.

Nehmen wir an, mein Code für die Indexaktion lautet wie folgt:

%Vor%

Testergebnisse:

%Vor%

Die Zeile, die diese Ausnahme verursacht, ist der Controller: if (!$this->zfcUserAuthentication()->hasIdentity()) { Diese Zeile bezieht sich auf Zeile 974 im SmsController.

Es ist offensichtlich, dass ich keinen Zugriff auf den ZfcUserAuthentication-Dienst habe. Daher lautet die Frage: Wie spotze ich den ZfcUserAuthentication-Dienst und spreche ihn in meinen Controller ein?

Um mit dem Thema fortzufahren, wie würde ich mich über einen eingeloggten Benutzer lustig machen, um meine Aktion erfolgreich zu testen, arbeitet nach der Spezifikation?

    
Aydin Hassan 16.01.2013, 08:55
quelle

2 Antworten

10

In der ZfcUser-Dokumentation wird vorgeschlagen, dass es sich um ein Plugin handelt, das Sie in den Controller injizieren müssen.

Sie müssen Ihre Klassennamen ändern, um die ZfcUser-Klassen zu übernehmen

Ihre Mocks müssen auch hinzugefügt werden, da getIdenty ein anderes Objekt zurückgibt.

Folgendes funktionierte für mich - fügen Sie in Ihre phpunit setUp () Methode ein.

%Vor%

Es könnte einen einfacheren Weg geben, andere Gedanken willkommen zu heißen.

    
Greg.Forbes 02.02.2013, 02:54
quelle
0

So habe ich es gemacht.

%Vor%     
David A Garcia 02.01.2016 12:57
quelle