Ich habe einen PHPUnit-Test, der ein Array ungültiger Werte durchläuft und behauptet, dass jeder von der Funktion korrekt zurückgewiesen wird.Wie kann festgestellt werden, welche Assertion in einer Schleife fehlgeschlagen ist?
Zum Beispiel, validateInput
sollte nur dann true zurückgeben, wenn die Eingabe eine Zeichenfolge ist, andernfalls gibt false zurück.
public function testValidateInput()
{
$obj = new MyClass();
$data = [
null,
42,
21.21,
-24,
-12.12,
false,
array('key' => 'value'),
(object) 'value'
];
foreach ($data as $item){
$this->assertSame(false, $obj->validateInput($item));
}
}
Wenn der Test eine Behauptung fehlschlägt, erhalte ich nur die Zeilennummer - das ist das gleiche für alle Werte ist, weil es in einer Schleife ist.
1) MyClassTest::testValidateInput Failed asserting that true is identical to false. /home/jeff/MyClass/tests/MyClassTest.php:24
Wie kann ich, welcher Wert konnte die Behauptung bestimmen?
Wenn ich mich richtig erinnere, ist es möglich, einen letzten Parameter als eine benutzerdefinierte Nachricht zu übergeben, richtig? Dann können Sie '$ this-> assertSame (false, $ obj-> validateInput ($ item), 'Test nicht testen'. $ Item);' damit Sie auf dem Bildschirm den Wert erhalten, der fehlgeschlagen ist. –