Zend_Test-PHPUnit-Assertions.xml 13 KB

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