2016-12-14 2 views
0

Ein bisschen unklar auf den Titel, aber hier gehen wir.Catch Fehlermeldungen von Standard-PHP-Funktionen mit einem Unit-Test

Ich führe einen Komponententest auf einer Methode, die im Wesentlichen eine strpos() ausführt. Gefällt mir:

Jetzt möchte ich auch sehen, was passiert, wenn ich es einen leeren Wert liefern. Wenn eine leere Zeichenfolge liefern, erhalte ich die folgende Meldung:

strpos(): Empty needle 

Diese Meldung an sich klar genug ist, ich will nicht, hier eine Ausnahme werfen. Ich möchte wissen, ob es diese Nachricht zurückgegeben hat. Wie würde ich das machen oder muss ich meine Methode umschreiben?

+0

technisch könnten Sie 'set_error_handler' und' restore_error_handler' verwenden. Aber wenn man an Design denkt, ist das keine gute Wahl. – xmike

Antwort

1

Versuchen Sie Folgendes:

public function testWarning() 
{ 
    $this->expectException(PHPUnit_Framework_Error_Warning::class); 
    $this->expectExceptionMessage("Empty needle"); 
    strpos('meh', ''); 
} 

Dieser Test besteht, aber wenn man die Erwartungen auf Kommentar, es funktioniert nicht. Es gibt mehr verwandte Klassen im PHPUnit-Framework, wie PHPUnit_Framework_Error_Deprecated, PHPUnit_Framework_Error_Notice und so weiter.

Verwandte Themen