Ausnahmen
Ausnahmen sind der Herz vom Unit Testen; Sie können verwendet werden um zu prüfen das die
Ergebnisse das sind was man erwartet. Zu diesem Zweck bietet
Zend_Test_PHPUnit_ControllerTestCase eine Anzahl an Ausnahmen um das
Testen eigene MVC Anwendungen und Kontroller einfacher zu machen.
CSS Selektor Ausnahmen
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' Ausnahmen integriert. Jede dieser Ausnahmen nimmt
als erstes Argument einen CSS Selektor, mit optional hinzugefügten Argumenten und/oder
einer Fehlermeldung, basierend auf dem Ausnahmetyp. Die Regeln für das schreiben der CSS
Selektoren kann im Kapitel Theorie der
Anwendung von Zend_Dom_Query gefunden werden. Abfrageausnahmen 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
Ausnahmemeldung 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 Ausnahmemeldung 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 Ausnahmemeldung 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
Ausnahmemeldung 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
Ausnahmemeldung 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 Ausnahmemeldung 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 Ausnahme
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 Ausnahmen
Einige Entwickler sind mit XPath vertrauter als mit CSS Selektoren, und deshalb werden
für alle Query Ausnahmen 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 Ausnahmen
Oft wird eine Aktion umgeleitet. Statt der Umleitung zu folgen erlaubt es
Zend_Test_PHPUnit_ControllerTestCase diese Umleitungen mit einer
handvoll von Ausnahmen 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 Ausnahmen
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 Ausnahmen 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 Ausnahmen eine 'Not' Variante für negative Ausnahmen.
Anfrage Ausnahmen
Es ist oft sinnvoll gegen die letzte Aktion, den Kontroller und das Modul zu prüfen;
zusätzlich ist es möglich die genommene Route die prüfen. Die folgenden Ausnahmen können
in diesen Fällen helfen:
assertModule($module, $message = ''): Nimmt an das das angegebene Modul
in der letzten Dispatch Aktion verwendet wurde.
assertController($controller, $message = ''): Nimmt an das der
angegebene Kontroller 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 Ausnahmen.