Zend_Test-PHPUnit-Assertions.xml 13 KB

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