Übrigens können Sie verwenden willThrowException() stattdessen.
– lokalheinz
27. August 2017 um 13:23 Uhr
Nein, willThrowException() kann nur eine Ausnahme als Parameter annehmen, keinen Fehler.
– Nikhil Kuriakose
27. August 2017 um 13:26 Uhr
Nur zur Information, die willThrowException() Methode akzeptiert jetzt \Throwable nicht nur \Exception auf PHPUnit 8 (mindestens 8.2, nicht auf früherer Version ausprobiert)
– Etschi
25. Juni 2019 um 11:38 Uhr
@NikhilKuriakose: Wenn dies die Frage beantwortet, markieren Sie sie bitte als “Antwort”.
– k00ni
15. Januar 2020 um 8:59 Uhr
Matt Doran
Sie können eine Funktion in einem Test wie folgt veranlassen, eine Ausnahme auszulösen:
Schön, jetzt wird es interessant. Ich gehe davon aus, dass beide Verhaltensweisen (Ihre Antwort und meine) genau die gleiche Ausgabe liefern?
– Nikhil Kuriakose
27. August 2017 um 13:24 Uhr
Ha, deine ist definitiv besser und macht auf PHP7 mehr Sinn. Ich hatte noch nicht das Bedürfnis, einen Fehler auszulösen (im Gegensatz zum Auslösen von Ausnahmen), also habe ich das, was ich hier vorgeschlagen habe, noch nicht wirklich verwendet.
– lokalheinz
27. August 2017 um 13:26 Uhr
Aber das ist gut. Ich habe stundenlang nach Antworten gesucht und plötzlich habe ich zwei 🙂 Danke!!!
– Nikhil Kuriakose
27. August 2017 um 13:27 Uhr
Froh, dass Sie es mögen! Oft macht es Sinn, jemanden zu fragen, hehe!
– lokalheinz
27. August 2017 um 13:28 Uhr
Hochwertiger Code erzeugt während der normalen Arbeit keine PHP-Fehler (Notice, Warning, Fatal, Parse Errors). Wenn es immer noch Fehler produziert – sollten Sie Versuchen Sie, solche Grenzfälle zu erkennen und Ausnahmen auszulösen / ein anderes Ergebnis zurückzugeben. Dann sind diese Ausnahmen in PHPUnit-Tests leicht mockbar.
Andere Problemumgehung, wenn es nicht möglich ist, die getestete Klasse zu ändern– dient dazu, den Fehler-Listener in Ihrem Test zu definieren, siehe set_error_handler. Die Logik sollte folgende sein:
Die getestete Methode generiert einen Fehler, z. B. eine Warnung
Die Warnung wird von set_error_handler innerhalb Ihres Tests abgefangen.
Innerhalb des Rückrufs von set_error_handler setzen Sie eine Variable, um anzuzeigen, dass die Warnung abgefangen wurde. (es könnte eine statische Eigenschaft oder ein anderer Speicher sein)
Am Ende des Tests behaupten Sie, dass die statische Eigenschaft einen bestimmten Wert hat = es bedeutet, dass eine Warnung generiert wurde.
14302900cookie-checkSpottmethoden zum Auslösen von Error phpunityes
Was meinst du damit? Du kannst Wurf Ausnahmen, und Sie können Abzug Fehler.
– lokalheinz
27. August 2017 um 13:17 Uhr
Meine Semantik kann falsch sein. Aber ich wollte per Stub Throw/Trigger Fehler machen. Habe es selbst beantwortet.
– Nikhil Kuriakose
27. August 2017 um 13:21 Uhr
Beachten Sie, dass dies nur in PHP 7 und höher funktioniert, siehe php.net/manual/en/language.errors.php7.php.
– lokalheinz
27. August 2017 um 13:24 Uhr