Wie kann ich testen, ob dieselbe Methode mit korrekten Parametern mit PHPUnit und Mock-Objekt aufgerufen wird?

8

Ich verwende PHPUnit für meine Komponententests Ich verwende ein Mock-Objekt, um zu testen, ob eine Methode mit den richtigen Parametern aufgerufen wird. Das funktioniert gut, wenn ich das nur einmal machen möchte.

%Vor%

Nun habe ich die Situation, die ich testen möchte, wenn das updateLog ein zweites Mal aufgerufen wird (mit anderen Parametern). Ich sehe nicht, wie ich das mit der 'mit' Methode machen kann.

Hat jemand einen Vorschlag?

    
Fino 21.11.2010, 15:23
quelle

4 Antworten

13

Ich kenne Ihren spöttischen Rahmen nicht. Normalerweise kreierst du nur eine andere Erwartung. Ich nehme an, dass sollte auch mit diesem Framework arbeiten.

%Vor%

Bearbeiten

Es scheint, dass das PHPUnit-Framework nicht mehrere unterschiedliche Erwartungen an dieselbe Methode unterstützt. Laut dieser Website Sie müssen die Indexfunktionalität verwenden.

Es würde dann so aussehen

%Vor%     
treze 21.11.2010, 16:08
quelle
1

Ab PHPUnit 4.2 können Sie die withConsecutive assertion verwenden. Vorausgesetzt, Sie kennen die Reihenfolge der Anrufe. Dein Spott würde so aussehen:

%Vor%     
Schleis 11.09.2014 17:35
quelle
1

Die vorherige Antwort ist korrekt.

Sie finden die Antwort im PHPUnit-Handbuch Ссылка Suche nach Matchern. Matcher sind die Klassen, die von den Funktionen any (), never () usw. zurückgegeben werden. Sie benötigen den PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex, der von der Methode at ()

zurückgegeben wird

Sie können mehr finden, indem Sie PHPUnit-Klassen durchsuchen (fügen Sie dem Projektpfad hinzu und verwenden Sie eine IDE wie Netbeans, um zu ihnen zu springen und zu sehen, was Sie verwenden können)

    
Elvis Ciotti 21.01.2012 16:10
quelle
0

returnCallback

Wenn Sie withConsecutive() nicht verwenden können, möglicherweise weil Sie eine alte Version von PHPUnit verwenden, haben Sie eine andere Option mit returnCallback .

Die Funktion returnCallback wird jedes Mal aufgerufen, wenn Ihre Mock-Methode aufgerufen wird. Das bedeutet, dass Sie die Argumente, die an sie übergeben werden, für eine spätere Überprüfung speichern können. Zum Beispiel:

%Vor%     
seth flowers 10.07.2015 15:34
quelle

Tags und Links