Zend_Test-PHPUnit-Assertions.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.test.phpunit.assertions">
  5. <title>Ausnahmen</title>
  6. <para>
  7. Ausnahmen sind der Herz vom Unit Testen; Sie können verwendet werden um zu prüfen das die Ergebnisse
  8. das sind was man erwartet. Zu diesem Zweck bietet <classname>Zend_Test_PHPUnit_ControllerTestCase</classname>
  9. eine Anzahl an Ausnahmen um das testen eigene MVC Anwendungen und Kontroller einfacher zu machen.
  10. </para>
  11. <sect3 id="zend.test.phpunit.assertions.query">
  12. <title>CSS Selektor Ausnahmen</title>
  13. <para>
  14. CSS Selektoren sind ein einfacher Weg um zu Prüfen das bestimmte Teile im Inhalt der Antwort
  15. enthalten sind. Mit Ihnen ist es auch trivial sicherzustellen das Elemente die für Javascript UIs
  16. und/oder AJAX Integrationen notwendig sind, vorhanden sind; die meisten JS Toolkits bieten einige
  17. Mechanismen an für das Abholen von DOM Elementen die auf CSS Selektoren basieren, so das der Syntax
  18. der gleiche wäre.
  19. </para>
  20. <para>
  21. Diese Funktionalität wird über <link linkend="zend.dom.query">Zend_Dom_Query</link> angeboten,
  22. und in ein Set von 'Query' Ausnahmen integriert. Jede dieser Ausnahmen nimmt als erstes
  23. Argument einen CSS Selektor, mit optional hinzugefügten Argumenten und/oder einer Fehlermeldung,
  24. basierend auf dem Ausnahmetyp. Die Regeln für das schreiben der CSS Selektoren kann im
  25. <link linkend="zend.dom.query.operation">Kapitel Theorie der Anwendung von Zend_Dom_Query</link>
  26. gefunden werden. Abfrageausnahmen enthalten:
  27. </para>
  28. <itemizedlist>
  29. <listitem><para>
  30. <code>assertQuery($path, $message = '')</code>: Nimmt an das ein oder mehrere DOM Elemente,
  31. die dem gegebenen CSS Selektor entsprechen, vorhanden sind. Wenn eine <code>$message</code>
  32. vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung vorangestellt.
  33. </para></listitem>
  34. <listitem><para>
  35. <code>assertQueryContentContains($path, $match, $message = '')</code>: Nimmt an das ein oder
  36. mehrere DOM Elemente, die dem angegebenen CSS Selektor entsprechen, vorhanden sind, und das
  37. zumindest einer dem Inhalt, der in <code>$match</code> angegeben wurde, entspricht. Wenn eine
  38. <code>$message</code> vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung
  39. vorangestellt.
  40. </para></listitem>
  41. <listitem><para>
  42. <code>assertQueryContentRegex($path, $pattern, $message = '')</code>: Nimmt an das ein oder
  43. mehrere DOM Elemente, die dem angegebenen CSS Selektor entsprechen, vorhanden sind, und das
  44. zumindest einer dem Regulären Ausdruck der in <code>$pattern</code> angegeben wurde, entspricht.
  45. Wenn eine <code>$message</code> vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung
  46. vorangestellt.
  47. </para></listitem>
  48. <listitem><para>
  49. <code>assertQueryCount($path, $count, $message = '')</code>: Nimmt an das exakt
  50. <code>$count</code> DOM Elemente dem angegebenen CSS Selektor entsprechen. Wenn eine
  51. <code>$message</code> vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung
  52. vorangestellt.
  53. </para></listitem>
  54. <listitem><para>
  55. <code>assertQueryCountMin($path, $count, $message = '')</code>: Nimmt an das zumindest
  56. <code>$count</code> DOM Element dem angegebenen CSS Selektor entsprechen. Wenn eine
  57. <code>$message</code> vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung
  58. vorangestellt. <emphasis>Achtung:</emphasis> Die Spezifizierung eines Wertes von 1 für
  59. <code>$count</code> ist das Gleiche wie die einfache Verwendung von <code>assertQuery()</code>.
  60. </para></listitem>
  61. <listitem><para>
  62. <code>assertQueryCountMax($path, $count, $message = '')</code>: Nimmt an das es nicht
  63. mehr als <code>$count</code> DOM Elemente gibt die dem angegebenen CSS Selektor entsprechen.
  64. Wenn eine <code>$message</code> vorhanden ist, wird diese jeder fehlgeschlagenen Ausnahmemeldung
  65. vorangestellt. <emphasis>Achtung:</emphasis> Die Spezifizierung eines Wertes von 1 für
  66. <code>$count</code> ist das Gleiche wie die einfache Verwendung von <code>assertQuery()</code>.
  67. </para></listitem>
  68. </itemizedlist>
  69. <para>
  70. Zusätzlich hat jede der obigen Methoden eine 'Not' Variante die eine negative Ausnahme anbietet:
  71. <code>assertNotQuery()</code>, <code>assertNotQueryContentContains()</code>,
  72. <code>assertNotQueryContentRegex()</code>, und <code>assertNotQueryCount()</code>.
  73. (Es ist zu beachten das die min und max Zählen keine dieser Varianten haben, was aus logischen
  74. Gründen so ist.)
  75. </para>
  76. </sect3>
  77. <sect3 id="zend.test.phpunit.assertions.xpath">
  78. <title>XPath Ausnahmen</title>
  79. <para>
  80. Einige Entwickler sind mit XPath vertrauter als mit CSS Selektoren, und deshalb werden für alle
  81. <link linkend="zend.test.phpunit.assertions.query">Query Ausnahmen</link> auch XPath Varianten
  82. engeboten. Diese sind:
  83. </para>
  84. <itemizedlist>
  85. <listitem><para>
  86. <code>assertXpath($path, $message = '')</code>
  87. </para></listitem>
  88. <listitem><para>
  89. <code>assertNotXpath($path, $message = '')</code>
  90. </para></listitem>
  91. <listitem><para>
  92. <code>assertXpathContentContains($path, $match, $message = '')</code>
  93. </para></listitem>
  94. <listitem><para>
  95. <code>assertNotXpathContentContains($path, $match, $message = '')</code>
  96. </para></listitem>
  97. <listitem><para>
  98. <code>assertXpathContentRegex($path, $pattern, $message = '')</code>
  99. </para></listitem>
  100. <listitem><para>
  101. <code>assertNotXpathContentRegex($path, $pattern, $message = '')</code>
  102. </para></listitem>
  103. <listitem><para>
  104. <code>assertXpathCount($path, $count, $message = '')</code>
  105. </para></listitem>
  106. <listitem><para>
  107. <code>assertNotXpathCount($path, $count, $message = '')</code>
  108. </para></listitem>
  109. <listitem><para>
  110. <code>assertXpathCountMin($path, $count, $message = '')</code>
  111. </para></listitem>
  112. <listitem><para>
  113. <code>assertNotXpathCountMax($path, $count, $message = '')</code>
  114. </para></listitem>
  115. </itemizedlist>
  116. </sect3>
  117. <sect3 id="zend.test.phpunit.assertions.redirect">
  118. <title>Umleitungs Ausnahmen</title>
  119. <para>
  120. Oft wird eine Aktion umgeleitet. Statt der Umleitung zu folgen erlaubt es
  121. <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> diese Umleitungen mit einer handvoll von
  122. Ausnahmen zu testen.
  123. </para>
  124. <itemizedlist>
  125. <listitem><para>
  126. <code>assertRedirect($message = '')</code>: Nimmt einfach an das eine Umleitung
  127. stattgefunden hat.
  128. </para></listitem>
  129. <listitem><para>
  130. <code>assertNotRedirect($message = '')</code>: Nimmt einfach an das keine Umleitung
  131. stattgefunden hat.
  132. </para></listitem>
  133. <listitem><para>
  134. <code>assertRedirectTo($url, $message = '')</code>: Nimmt an das eine Umleitung stattgefunden
  135. hat, und das der Wert des Ziel Headers die angegebene <code>$url</code> ist.
  136. </para></listitem>
  137. <listitem><para>
  138. <code>assertNotRedirectTo($url, $message = '')</code>: Nimmt an das eine Umleitung entweder
  139. NICHT stattgefunden hat, oder das der Wert des Ziel Headers NICHT die angegebene
  140. <code>$url</code> ist.
  141. </para></listitem>
  142. <listitem><para>
  143. <code>assertRedirectRegex($pattern, $message = '')</code>: Nimmt an das eine Umleitung
  144. stattgefunden hat, und das der Wert des Ziel Headers dem durch <code>$pattern</code>
  145. angegebenen regulären Ausdruck entspricht.
  146. </para></listitem>
  147. <listitem><para>
  148. <code>assertNotRedirectRegex($pattern, $message = '')</code>: Nimmt an das eine Umleitung
  149. entweder NICHT stattgefunden hat, oder das der Wert des Ziel Headers NICHT dem durch
  150. <code>$pattern</code> angegebenen regulären Ausdruck entspricht.
  151. </para></listitem>
  152. </itemizedlist>
  153. </sect3>
  154. <sect3 id="zend.test.phpunit.assertions.header">
  155. <title>Antwort Header Ausnahmen</title>
  156. <para>
  157. Zusätzlich zur Prüfung auf Umleitungs Header, ist es oft notwendig auf spezielle HTTP Antwort Codes
  158. und Header zu prüfen -- zum Beispiel, um zu erkennen um eine Aktion eine 404 oder 500 Antwort
  159. hervorruft, oder um sicherzustellen das JSON Antworten die entsprechenden Content-Type Header
  160. enthält. Die folgenden Ausnahmen sind vorhanden.
  161. </para>
  162. <itemizedlist>
  163. <listitem><para>
  164. <code>assertResponseCode($code, $message = '')</code>: Nimmt an das die Antwort zum gegebenen
  165. HTTP Antwort Code geführt hat.
  166. </para></listitem>
  167. <listitem><para>
  168. <code>assertHeader($header, $message = '')</code>: Nimmt an das die Antwort den gegebenen
  169. Header enthält.
  170. </para></listitem>
  171. <listitem><para>
  172. <code>assertHeaderContains($header, $match, $message = '')</code>: Nimmt an das die Antwort
  173. den gegebenen Header enthält und das sein Inhalt den gegebenen String enthält.
  174. </para></listitem>
  175. <listitem><para>
  176. <code>assertHeaderRegex($header, $pattern, $message = '')</code>: Nimmt an das die Antwort den
  177. gegebenen Header enthält und das sein Inhalt der gegebenen Rexec entspricht.
  178. </para></listitem>
  179. </itemizedlist>
  180. <para>
  181. Zusätzlich hat jede der obigen Ausnahmen eine 'Not' Variante für negative Ausnahmen.
  182. </para>
  183. </sect3>
  184. <sect3 id="zend.test.phpunit.assertions.request">
  185. <title>Anfrage Ausnahmen</title>
  186. <para>
  187. Es ist oft sinnvoll gegen die letzte Aktion, den Kontroller und das Modul zu prüfen; zusätzlich
  188. ist es möglich die genommene Route die prüfen. Die folgenden Ausnahmen können in diesen Fällen
  189. helfen:
  190. </para>
  191. <itemizedlist>
  192. <listitem><para>
  193. <code>assertModule($module, $message = '')</code>: Nimmt an das das angegebene Modul in der
  194. letzten Dispatch Aktion verwendet wurde.
  195. </para></listitem>
  196. <listitem><para>
  197. <code>assertController($controller, $message = '')</code>: Nimmt an das der angegebene
  198. Kontroller in der letzten ausgeführten Aktion ausgewählt wurde.
  199. </para></listitem>
  200. <listitem><para>
  201. <code>assertAction($action, $message = '')</code>: Nimmt an das die angegebene Aktion zuletzt
  202. ausgeführt wurde.
  203. </para></listitem>
  204. <listitem><para>
  205. <code>assertRoute($route, $message = '')</code>: Nimmt an das die angegebene benannte Route
  206. dem Router entsprochen hat.
  207. </para></listitem>
  208. </itemizedlist>
  209. <para>
  210. Jede hat auch eine 'Not' Variante für negative Ausnahmen.
  211. </para>
  212. </sect3>
  213. </sect2>
  214. <!--
  215. vim:se ts=4 sw=4 et:
  216. -->