Behauptungen
Behauptungen sind der Herz vom Unit Testen; Sie können verwendet werden um zu Prüfen dass
die Ergebnisse das sind was man erwartet. Zu diesem Zweck bietet
Zend_Test_PHPUnit_ControllerTestCase eine Anzahl an Behauptungen um
das Testen eigene MVC Anwendungen und Controller einfacher zu machen.
CSS Selektor Behauptungen
CSS Selektoren sind ein einfacher Weg um zu Prüfen das bestimmte
Teile im Inhalt der Antwort enthalten sind. Mit Ihnen ist es auch trivial
sicherzustellen das Elemente die für Javascript UIs und/oder AJAX
Integrationen notwendig sind, vorhanden sind; die meisten JS Toolkits bieten einige
Mechanismen an für das Abholen von DOM Elementen die auf CSS
Selektoren basieren, so das der Syntax der gleiche wäre.
Diese Funktionalität wird über Zend_Dom_Query
angeboten, und in ein Set von 'Query' Behauptungen integriert. Jede dieser Behauptungen
nimmt als erstes Argument einen CSS Selektor, mit optional
hinzugefügten Argumenten und/oder einer Fehlermeldung, basierend auf dem Typ der
Behauptung. Die Regeln für das Schreiben der CSS Selektoren kann im
Kapitel Theorie der Anwendung von
Zend_Dom_Query gefunden werden. Abfragebehauptungen enthalten:
assertQuery($path, $message = ''): Nimmt an das ein
oder mehrere DOM Elemente, die dem gegebenen CSS Selektor
entsprechen, vorhanden sind. Wenn eine $message vorhanden
ist, wird diese jeder fehlgeschlagenen Meldung einer Behauptung vorangestellt.
assertQueryContentContains($path, $match, $message =
''): Nimmt an das ein oder mehrere DOM Elemente, die dem
angegebenen CSS Selektor entsprechen, vorhanden sind, und das
zumindest einer dem Inhalt, der in $match angegeben wurde,
entspricht. Wenn eine $message vorhanden ist, wird diese
jeder fehlgeschlagenen Meldung einer Behauptung vorangestellt.
assertQueryContentRegex($path, $pattern, $message =
''): Nimmt an das ein oder mehrere DOM Elemente, die dem
angegebenen CSS Selektor entsprechen, vorhanden sind, und das
zumindest einer dem Regulären Ausdruck der in $pattern
angegeben wurde, entspricht. Wenn eine $message vorhanden
ist, wird diese jeder fehlgeschlagenen Meldung einer Behauptung vorangestellt.
assertQueryCount($path, $count, $message = ''): Nimmt
an das exakt $count DOM Elemente dem angegebenen
CSS Selektor entsprechen. Wenn eine
$message vorhanden ist, wird diese jeder fehlgeschlagenen
Meldung einer Behauptung vorangestellt.
assertQueryCountMin($path, $count, $message = ''):
Nimmt an das zumindest $count DOM Element dem angegebenen
CSS Selektor entsprechen. Wenn eine
$message vorhanden ist, wird diese jeder fehlgeschlagenen
Meldung einer Behauptung vorangestellt. Achtung: Die
Spezifizierung eines Wertes von 1 für $count ist das Gleiche
wie die einfache Verwendung von assertQuery().
assertQueryCountMax($path, $count, $message = ''):
Nimmt an das es nicht mehr als $count DOM Elemente gibt die
dem angegebenen CSS Selektor entsprechen. Wenn eine
$message vorhanden ist, wird diese jeder fehlgeschlagenen
Meldung einer Behauptung vorangestellt. Achtung: Die
Spezifizierung eines Wertes von 1 für $count ist das Gleiche
wie die einfache Verwendung von assertQuery().
Zusätzlich hat jede der obigen Methoden eine 'Not' Variante die eine negative Behauptung
anbietet: assertNotQuery(),
assertNotQueryContentContains(),
assertNotQueryContentRegex(), und
assertNotQueryCount(). (Es ist zu beachten das die min und max
Zählen keine dieser Varianten haben, was aus logischen Gründen so ist.)
XPath Behauptungen
Einige Entwickler sind mit XPath vertrauter als mit CSS Selektoren,
und deshalb werden für alle Abfrage
Behauptungen auch XPath Varianten engeboten. Diese sind:
assertXpath($path, $message = '')assertNotXpath($path, $message = '')assertXpathContentContains($path, $match, $message =
'')assertNotXpathContentContains($path, $match, $message =
'')assertXpathContentRegex($path, $pattern, $message = '')assertNotXpathContentRegex($path, $pattern, $message =
'')assertXpathCount($path, $count, $message = '')assertNotXpathCount($path, $count, $message = '')assertXpathCountMin($path, $count, $message = '')assertNotXpathCountMax($path, $count, $message = '')Umleitungs Behauptungen
Oft wird eine Aktion umgeleitet. Statt der Umleitung zu folgen erlaubt es
Zend_Test_PHPUnit_ControllerTestCase diese Umleitungen mit einer
handvoll von Behauptungen zu Testen.
assertRedirect($message = ''): Nimmt einfach an das
eine Umleitung stattgefunden hat.
assertNotRedirect($message = ''): Nimmt einfach an das
keine Umleitung stattgefunden hat.
assertRedirectTo($url, $message = ''): Nimmt an das
eine Umleitung stattgefunden hat, und das der Wert des Ziel Headers die
angegebene $url ist.
assertNotRedirectTo($url, $message = ''): Nimmt an das
eine Umleitung entweder NICHT stattgefunden hat, oder das der Wert des Ziel
Headers NICHT die angegebene $url ist.
assertRedirectRegex($pattern, $message = ''): Nimmt an
das eine Umleitung stattgefunden hat, und das der Wert des Ziel Headers dem
durch $pattern angegebenen regulären Ausdruck entspricht.
assertNotRedirectRegex($pattern, $message = ''): Nimmt
an das eine Umleitung entweder NICHT stattgefunden hat, oder das der Wert des
Ziel Headers NICHT dem durch $pattern angegebenen regulären
Ausdruck entspricht.
Antwort Header Behauptungen
Zusätzlich zur Prüfung auf Umleitungs Header, ist es oft notwendig auf spezielle
HTTP Antwort Codes und Header zu prüfen -- zum Beispiel, um zu
erkennen um eine Aktion eine 404 oder 500 Antwort hervorruft, oder um sicherzustellen
das JSON Antworten die entsprechenden Content-Type Header enthält.
Die folgenden Behauptungen sind vorhanden.
assertResponseCode($code, $message = ''): Nimmt an das
die Antwort zum gegebenen HTTP Antwort Code geführt hat.
assertHeader($header, $message = ''): Nimmt an das die
Antwort den gegebenen Header enthält.
assertHeaderContains($header, $match, $message = ''):
Nimmt an das die Antwort den gegebenen Header enthält und das sein Inhalt den
gegebenen String enthält.
assertHeaderRegex($header, $pattern, $message = ''):
Nimmt an das die Antwort den gegebenen Header enthält und das sein Inhalt der
gegebenen Regex entspricht.
Zusätzlich hat jede der obigen Behauptungen eine 'Not' Variante für negative
Behauptungen.
Anfrage Behauptungen
Es ist oft sinnvoll gegen die letzte Aktion, den Controller und das Modul zu prüfen;
zusätzlich ist es möglich die genommene Route die prüfen. Die folgenden Behauptungen
können in diesen Fällen helfen:
assertModule($module, $message = ''): Nimmt an dass das
angegebene Modul in der letzten Dispatch Aktion verwendet wurde.
assertController($controller, $message = ''): Nimmt an
das der angegebene Controller in der letzten ausgeführten Aktion ausgewählt
wurde.
assertAction($action, $message = ''): Nimmt an das die
angegebene Aktion zuletzt ausgeführt wurde.
assertRoute($route, $message = ''): Nimmt an das die
angegebene benannte Route dem Router entsprochen hat.
Jede hat auch eine 'Not' Variante für negative Behauptungen.