PHPUnit behauptet, dass eine Ausnahme ausgelöst wurde?
Weiß jemand, ob es eine assert
oder sowas, die können testen, ob eine Ausnahme wurde geworfen in den code getestet?
InformationsquelleAutor der Frage Felipe Almeida | 2011-04-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
expectException() PHPUnit-Dokumentation
PHPUnit Autor Artikel bietet ausführliche Tests von Ausnahmen best practices.
InformationsquelleAutor der Antwort Frank Farmer
Können Sie auch einen docblock-annotation:
Für PHP 5.5+ (vor allem mit einem Namensraum-code), die ich jetzt lieber mit
::class
InformationsquelleAutor der Antwort David Harkness
Wenn Sie auf PHP 5.5+, die Sie verwenden können,
::class
Auflösung um den Namen der Klasse mitexpectException
/setExpectedException
. Dies bietet mehrere Vorteile:string
so funktioniert es mit jeder version von PHPUnit.Beispiel:
PHP kompiliert
in
ohne PHPUnit klüger.
InformationsquelleAutor der Antwort David Harkness
Folgenden Code-test-exception-message und der Ausnahme-code.
Wichtig: Es scheitern wird, wenn die erwartete exception nicht geworfen zu werden.
InformationsquelleAutor der Antwort Farid Movsumov
Können Sie assertException Erweiterung zu behaupten, mehr als eine Ausnahme, die während einer Testausführung.
Insert-Methode in Ihrem Testfall und Verwendung:
Ich habe auch einen Merkmal für die Liebhaber von schönen code..
InformationsquelleAutor der Antwort hejdav
InformationsquelleAutor der Antwort Andrew
Alternative Weise kann das follwing:
Stellen Sie bitte sicher, dass Ihre test-Klasse Blöcke \PHPUnit_Framework_TestCase
InformationsquelleAutor der Antwort Antonis Charalambous
Hier die Ausnahme Behauptungen, die Sie tun können. Beachten Sie, dass alle von Ihnen sind optional.
Dokumentation finden Sie hier.
InformationsquelleAutor der Antwort Westy92
PHPUnit aktuellen "best practices" für Ausnahme-Tests sind.. glanzlos.
Öffnete ich ein Github issue für PHPUnit und wurde sofort entlassen durch den Betreuer.
Da ich stark nicht einverstanden mit der aktuellen
expectException
Umsetzung, machte ich eine Eigenschaft, die auf meinem test-Fällen.Bibliothek
Den
AssertThrows
Merkmal der Veröffentlichung auf Github und packagist so kann es installiert werden mit dem Komponisten.Einfaches Beispiel
Nur zur Veranschaulichung der Geist, der hinter der syntax:
Recht ordentlich?
Vollen Nutzung Beispiel
Hier ist eine tatsächliche TestCase-Klasse, die zeigt, dass eine umfassendere Nutzung Beispiel:
InformationsquelleAutor der Antwort jchook
Die PHPUnit
expectException
Methode ist sehr unbequem, weil es erlaubt zu testen, nur eine Ausnahme pro test-Methode.Ich habe eine Hilfsfunktion zu behaupten, dass eine Funktion eine exception wirft:
Fügen Sie es zu Ihrem test-Klasse und rufen auf diese Weise:
InformationsquelleAutor der Antwort Finesse
Seien Sie sehr vorsichtig über
"/**"
beachten Sie die doppelten "*". Schreiben Sie nur "**"(asterix) schlägt fehl, code.Auch stellen Sie sicher, dass Ihr mit der letzten version von phpUnit. In einigen früheren Versionen von phpunit @expectedException Ausnahme nicht unterstützt. Ich hatte 4.0 und es hat nicht funktioniert für mich, ich hatte ein update auf 5.5 https://coderwall.com/p/mklvdw/install-phpunit-with-composer zu aktualisieren mit dem Komponisten.
InformationsquelleAutor der Antwort Catalin Cislariu