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?
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%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 wirdSie 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)
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: