Zend_Test-PHPUnit-Assertions.xml 12 KB

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