| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 20807 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.test.phpunit.assertions">
- <title>Assertions</title>
- <para>
- Les assertions sont le coeur des tests unitaires; vous les utilisez pour vérifier que
- le résultat est bien celui que vous attendiez. A cette fin,
- <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> fournit un certain nombre
- d'assertions pour simplifier le test de vos applications et contrôleurs <acronym>MVC</acronym>.
- </para>
- <sect3 id="zend.test.phpunit.assertions.query">
- <title>Les assertions par sélecteurs CSS</title>
- <para>
- Les sélecteurs <acronym>CSS</acronym> sont une manière simple de vérifier que certaines constructions
- sont bien présentes dans le contenu de votre réponse. Cela rend aussi plus simple de
- s'assurer que les éléments nécessaires pour les librairies Javascript et/ou
- l'intégration d'AJAX sont présents ; la plupart des bibliothèques Javascript fournissent
- des mécanismes pour charger des éléments DOM sur la base des sélecteurs <acronym>CSS</acronym>, ainsi la
- syntaxe sera identique.
- </para>
- <para>
- Cette fonctionnalité est fournie via <link
- linkend="zend.dom.query">Zend_Dom_Query</link>, et intégré à un jeu d'assertions de type
- "<code>Query*</code>". Chacune de ces assertions prend un sélecteur <acronym>CSS</acronym> en tant que
- premier argument, avec optionnellement des arguments additionnels et/ou un message
- d'erreur, basé sur le type d'assertion. Vous pouvez trouver les règles d'écriture des
- électeurs <acronym>CSS</acronym> dans le chapitre <link linkend="zend.dom.query.operation">Zend_Dom_Query -
- Aspect théorique</link>. Les assertion "<code>Query*</code>" incluent :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>assertQuery($path, $message = '')</methodname> : vérifie qu'un ou
- plusieurs éléments DOM correspondant au sélecteur <acronym>CSS</acronym> fourni sont présents. Si
- un <varname>$message</varname> est présent, il sera ajouté en cas d'échec de
- l'assertion.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertQueryContentContains($path, $match, $message = '')</methodname> :
- vérifie qu'un ou plusieurs éléments DOM correspondant au sélecteur <acronym>CSS</acronym> fourni
- sont présents, et qu'au moins un de ceux-ci contient le contenu fournit dans
- <varname>$match</varname>. Si un <varname>$message</varname> est présent, il sera ajouté en
- cas d'échec de l'assertion.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertQueryContentRegex($path, $pattern, $message = '')</methodname> :
- vérifie qu'un ou plusieurs éléments DOM correspondant au sélecteur <acronym>CSS</acronym> fourni
- sont présents, et qu'au moins un de ceux-ci correspond à l'expression régulière
- fournie dans <varname>$pattern</varname>. Si un <varname>$message</varname> est présent, il
- sera ajouté en cas d'échec de l'assertion.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertQueryCount($path, $count, $message = '')</methodname> : vérifie
- qu'un nombre exact <varname>$count</varname> d'éléments DOM correspondant au sélecteur
- <acronym>CSS</acronym> fourni sont présents. Si un <varname>$message</varname> est présent, il sera
- ajouté en cas d'échec de l'assertion.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertQueryCountMin($path, $count, $message = '')</methodname> : vérifie
- qu'au moins un nombre <varname>$count</varname> d'éléments DOM correspondant au
- sélecteur <acronym>CSS</acronym> fourni sont présents. Si un <varname>$message</varname> est présent, il
- sera ajouté en cas d'échec de l'assertion. <emphasis>Note :</emphasis> spécifier
- une valeur de 1 pour <varname>$count</varname> est la même chose qu'un simple
- <methodname>assertQuery()</methodname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertQueryCountMax($path, $count, $message = '')</methodname> : vérifie
- qu'il n'y a pas plus d'un nombre <varname>$count</varname> d'éléments DOM
- correspondant au sélecteur <acronym>CSS</acronym> fourni sont présents. Si un <varname>$message</varname>
- est présent, il sera ajouté en cas d'échec de l'assertion. <emphasis>Note
- :</emphasis> spécifier une valeur de 1 pour <varname>$count</varname> est la même
- chose qu'un simple <methodname>assertQuery()</methodname>.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
- qui correspond à l'assertion négative : <methodname>assertNotQuery()</methodname>,
- <methodname>assertNotQueryContentContains()</methodname>, <methodname>assertNotQueryContentRegex()</methodname>,
- et <methodname>assertNotQueryCount()</methodname>. (Notez que les versions <code>CountMin</code> et
- <code>CountMax</code> n'ont pas de variantes pour des raisons évidentes).
- </para>
- </sect3>
- <sect3 id="zend.test.phpunit.assertions.xpath">
- <title>Les assertions XPath</title>
- <para>
- Certains développeurs sont plus familiers avec XPath qu'avec des sélecteurs <acronym>CSS</acronym>,
- ainsi les variantes XPath des toutes les <link
- linkend="zend.test.phpunit.assertions.query">assertions Query</link> sont aussi
- fournies. Il s'agit de :
- </para>
- <itemizedlist>
- <listitem>
- <para><methodname>assertXpath($path, $message = '')</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>assertNotXpath($path, $message = '')</methodname></para>
- </listitem>
- <listitem>
- <para>
- <code>assertXpathContentContains($path, $match, $message =
- '')</code>
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertNotXpathContentContains($path, $match, $message =
- '')</code>
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertXpathContentRegex($path, $pattern, $message =
- '')</code>
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertNotXpathContentRegex($path, $pattern, $message =
- '')</code>
- </para>
- </listitem>
- <listitem>
- <para><methodname>assertXpathCount($path, $count, $message = '')</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>assertNotXpathCount($path, $count, $message = '')</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>assertXpathCountMin($path, $count, $message = '')</methodname></para>
- </listitem>
- <listitem>
- <para><methodname>assertNotXpathCountMax($path, $count, $message = '')</methodname></para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.test.phpunit.assertions.redirect">
- <title>Les assertions de redirections</title>
- <para>
- Souvent une action va redirigé le visiteur. Plutôt que de suivre cette
- redirection, <classname>Zend_Test_PHPUnit_ControllerTestCase</classname> vous permet de
- tester ces redirections avec un jeu d'assertions :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>assertRedirect($message = '')</methodname> : vérifie simplement qu'une
- redirection est apparue.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertNotRedirect($message = '') </code>: vérifie qu'aucune
- redirection n'est apparue.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertRedirectTo($url, $message = '')</methodname> : vérifie qu'une
- redirection est apparue, et que la valeur de l'en-tête "<code>Location</code>"
- est l' <varname>$url</varname> fourni.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertNotRedirectTo($url, $message = '') </code>: vérifie soit
- qu'aucune redirection n'est apparue, ou que la valeur de l'en-tête
- "<code>Location</code>" n'est pas l' <varname>$url</varname> fourni.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertRedirectRegex($pattern, $message = '') </code>: vérifie qu'une
- redirection est apparue, et que la valeur de l'en-tête "<code>Location</code>"
- correspond à l'expression régulière fourni dans <varname>$pattern</varname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertNotRedirectRegex($pattern, $message = '')</methodname> : vérifie
- soit qu'aucune redirection n'est apparue, ou que la valeur de l'en-tête
- "<code>Location</code>" ne correspond pas à l'expression régulière fourni dans
- <varname>$pattern</varname>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.test.phpunit.assertions.header">
- <title>Les assertions d'en-têtes de réponses</title>
- <para>
- En plus de vérifier les en-têtes de redirection, vous avez souvent besoin de
- vérifier des codes de réponse <acronym>HTTP</acronym> et des en-têtes spécifiques - par exemple, pour
- déterminer si une action entraînera une réponse 404 ou 500, ou pour s'assurer qu'une
- réponse <acronym>JSON</acronym> contient bien l'en-tête <code>Content-Type</code> approprié. Les assertions
- suivantes sont disponibles :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>assertResponseCode($code, $message = '') </code>: vérifie qu'une
- réponse renvoie le code de réponse <acronym>HTTP</acronym> fourni.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertHeader($header, $message = '')</methodname> : vérifie qu'une réponse
- renvoie l'en-tête fourni.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertHeaderContains($header, $match, $message = '')</methodname> :
- vérifie qu'une réponse renvoie l'en-tête fourni et que son contenu vaut la
- chaîne fournie.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertHeaderRegex($header, $pattern, $message = '') </code>: vérifie
- qu'une réponse renvoie l'en-tête fourni et que son contenu correspond à
- l'expression régulière fournie.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
- qui correspond à l'assertion négative.
- </para>
- </sect3>
- <sect3 id="zend.test.phpunit.assertions.request">
- <title>Les assertions de requêtes</title>
- <para>
- Il est souvent pratique de vérifier l'action, le contrôleur et le module
- dernièrement exécuté ; ou, vous pouvez vouloir vérifier quelle route a été utilisée. Les
- assertions suivantes peuvent vous aider dans ce cas :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>assertModule($module, $message = '') </code>: vérifie que le module
- fourni a été utilisé lors de la dernière action distribuée.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertController($controller, $message = '')</methodname> : vérifie que le
- contrôleur fourni a été utilisé lors de la dernière action distribuée.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>assertAction($action, $message = '')</methodname> : vérifie que l'action
- fournie est bien la dernière distribuée.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>assertRoute($route, $message = '') </code>: vérifie que la route
- nommée fournie a été utilisée par le routeur.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- De plus, toutes les méthodes ci-dessus possèdent une variante "<code>Not</code>"
- qui correspond à l'assertion négative.
- </para>
- </sect3>
- </sect2>
|