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