PHPUnit und die Funktion

8

Ich benutze das phpunit-Framework und habe einen Code wie diesen:

%Vor%

Diese Funktion wird über AJAX aufgerufen und ich kann den Würfel nicht mit return ersetzen. Die Frage ist: Wie kann ich einen Einheitentest mit einem solchen Code machen?

Ich kann dafür nicht das verwenden, behauptet.

Danke.

    
doctore 09.05.2011, 09:47
quelle

3 Antworten

17

Sie können das nicht testen ...

Manchmal bringt ein Komponententest solche Probleme (nicht testbare Situationen) mit sich. Das bedeutet normalerweise, dass das Problem nicht beim Testen liegt, sondern bei Ihrem Code und seiner Architektur.

Hier sollten Sie nicht die Funktion die verwenden (eigentlich sollten Sie die nicht verwenden, um eine HTTP-Antwort zurückzugeben ), sondern echo den json und dann das Skript beenden lassen richtig (oder return der json und echo es irgendwo anders).

Um dies zu testen, können Sie dann die Ausgabe erfassen und überprüfen (das ist ein einfaches Beispiel, es gibt viel besseres, denke ich).

Fazit: Das Problem ist mit Ihrem Code, beheben Sie das und dann können Sie versuchen, es zu testen . Wenn Sie nicht können, dann nicht testen.

    
Matthieu Napoli 09.05.2011, 11:21
quelle
3

Warum können Sie die() nicht durch return ersetzen?

Meine Lösung wäre, diesen Wurf zu einer Ausnahme zu machen und dann die Ausnahme mit einer anderen Methode zu fangen. Dann können Sie function a() testen, indem Sie prüfen, ob die richtige Ausnahme ausgelöst wird. Die andere Funktion behandelt die() .

    
Dan Blows 09.05.2011 11:20
quelle
3

eigentlich sterben scheint hier keine gute Lösung zu sein. aber wenn es keine Möglichkeit gibt, dies zu ändern, könnten Sie die Funktion wahrscheinlich in einem anderen Prozess ausführen.

Dafür müssen Sie eine Testdatei schreiben, die die Funktion A ausführt. ex.

%Vor%

rufen Sie dieses Skript jetzt mit shell_exec auf.

%Vor%

Die Rückgabevariable enthält die Ausgabe des Testscript.

    
superbly 09.05.2011 11:26
quelle

Tags und Links