Zend_Test-PHPUnit-Assertions.xml 13 KB

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