PHPUnit - test MVC-controller mit $_POST Variablen
Fange ich die Arbeit mit PHPUnit mit Kohana. Meine Bewerbung haben viele Controller, die einfach nur Daten aus einer form, überprüft und inserts/updates/deletes in/-/ab-Datenbank. Wie soll ich schreiben einen test-Fälle für das.
Ich weiß, dass wenn ich testen will, eine Funktion, die ich Schreibe-Daten-provider-Funktion und vergleichen Sie einfach zurückgegebene Wert mit dem erwarteten. Aber mein input Daten (Daten, die aus Formularen) übergeben wird in $_POST
variable. Wie sollte ich testen? Und nach, dass, sollte ich prüfen, wenn die eingefügten Daten wirklich in der Datenbank? Bitte geben Sie meinen einige Richtlinien für diese Art von tests oder links, um einige Beispiele/tutorials. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste von allen, wenn Sie den Test alle den Weg vom Empfang der gesendeten Daten, um zu überprüfen die Werte in der Datenbank, dies ist kein unit-test mehr : Sie sind nicht testen einer Komponente in isolation von den anderen, aber Sie testen die integration dieser Komponenten zusammen.
Es macht die Dinge härter, um zu testen :
Beachten Sie, dass ich nicht sagen, dass die Art von "integration" - tests ist nicht sinnvoll, btw 😉
Trotzdem Schmieden die
$_POST
array ist ganz einfach : es ist nicht schreibgeschützt, und Sie können speichern, was Sie wollen in ihm.So, am Anfang Ihrer test-Fall nichts verhindert, dass Sie die Injektion alle Daten, die Sie brauchen, in ihm.
phpunit
?Was Pascal sagte. Beachten Sie auch, dass es tools, die speziell für die Prüfung der Interaktion über http/browser-Ebene. Sie können SimpleTest web-Testfälle (Benutzt den emulated/skriptfähige browser). Wenn Sie es vorziehen PhpUnit, ich denke, Sie können ziemlich leicht zu verwenden, SimpleTest-browser innerhalb von PhpUnit. Ansonsten gibt es die mehr schwere Selenium-IDE für die PhpUnit-integration.
Gut Sie tun müssen, ist einfach legen Sie die post-var wie diese.
$this->reques
->setMethod('POST')
->setPost(array(
'param1' => 'value1',
'param2' => 'Wert2'
));
Ich hoffe, das funktioniert für Sie
Halten, Lächeln Kdecom
Stimme ich mit Pascal, dass die $_POST-array ist nicht ein nur-Lesen-array, und Sie können es Bearbeiten, wie erforderlich.
Auch hängt es von deinem framework, Zendframework bietet der freat flexiblility zu manipulieren, die Variablen
wie in dem Beispiel in den link
http://xebee.xebia.in/2010/02/05/test-driven-development-with-zend-framework-and-phpunit/comment-page-1/#comment-3431
Aber hier verliert man den Vorteil der Verwendung von PHPUnit ist eine eingebaute Funktion wie (Behauptungen, dataprovider, etc)
Aber in den meisten unserem Fall Nutzen wir die globalen arrays $_POST, $_GET oder $_REQUEST und wenn wir sehen, PHPUnit Beispiele, die wir bei google "How to set POST-Variablen in PHPUnit"
Als die PHPUnit nicht demostrate MVC-test-Fall(das ist etwas vom Löffel füttern, wenn)
Wir müssen die Instanz der Rahmen, und dann können wir spielen, um unsere Rahmen und PHPUnit
Auch Ihre Art und Weise testen, werden verschiedene Wege