AssertionsLes 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, Zend_Test_PHPUnit_ControllerTestCase fournit un certain nombre
d'assertions pour simplifier le test de vos applications et contrôleurs MVC.Les assertions par sélecteurs CSSLes sélecteurs CSS 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 CSS, ainsi la syntaxe sera
identique.Cette fonctionnalité est fournie via Zend_Dom_Query, et intégré à un
jeu d'assertions de type "Query*". Chacune de ces assertions prend un sélecteur CSS 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 CSS dans le chapitre Zend_Dom_Query - Aspect théorique. Les assertion "Query*"
incluent :assertQuery($path, $message = '') : vérifie qu'un ou plusieurs éléments DOM
correspondant au sélecteur CSS fourni sont présents. Si un $message est présent, il sera
ajouté en cas d'échec de l'assertion.assertQueryContentContains($path, $match, $message = '') : vérifie qu'un ou plusieurs
éléments DOM correspondant au sélecteur CSS fourni sont présents, et qu'au moins un de ceux-ci contient
le contenu fournit dans $match. Si un $message est présent, il sera ajouté en
cas d'échec de l'assertion.assertQueryContentRegex($path, $pattern, $message = '') : vérifie qu'un ou plusieurs
éléments DOM correspondant au sélecteur CSS fourni sont présents, et qu'au moins un de ceux-ci
correspond à l'expression régulière fournie dans $pattern. Si un $message est
présent, il sera ajouté en cas d'échec de l'assertion.assertQueryCount($path, $count, $message = '') : vérifie qu'un nombre exact
$count d'éléments DOM correspondant au sélecteur CSS fourni sont présents. Si un
$message est présent, il sera ajouté en cas d'échec de l'assertion.assertQueryCountMin($path, $count, $message = '') : vérifie qu'au moins un
nombre $count d'éléments DOM correspondant au sélecteur CSS fourni sont présents. Si un
$message est présent, il sera ajouté en cas d'échec de l'assertion. Note
: spécifier une valeur de 1 pour $count est la même chose qu'un simple
assertQuery().assertQueryCountMax($path, $count, $message = '') : vérifie qu'il n'y a pas
plus d'un nombre $count d'éléments DOM correspondant au sélecteur CSS fourni sont présents.
Si un $message est présent, il sera ajouté en cas d'échec de l'assertion. Note
: spécifier une valeur de 1 pour $count est la même chose qu'un simple
assertQuery().De plus, toutes les méthodes ci-dessus possèdent une variante "Not" qui correspond à
l'assertion négative : assertNotQuery(), assertNotQueryContentContains(),
assertNotQueryContentRegex(), et assertNotQueryCount(). (Notez que les versions
CountMin et CountMax n'ont pas de variantes pour des raisons évidentes).Les assertions XPathCertains développeurs sont plus familiers avec XPath qu'avec des sélecteurs CSS, ainsi les variantes XPath
des toutes les assertions Query sont aussi fournies.
Il s'agit de :assertXpath($path, $message = '')assertNotXpath($path, $message = '')assertXpathContentContains($path, $match, $message = '')assertNotXpathContentContains($path, $match, $message = '')assertXpathContentRegex($path, $pattern, $message = '')assertNotXpathContentRegex($path, $pattern, $message = '')assertXpathCount($path, $count, $message = '')assertNotXpathCount($path, $count, $message = '')assertXpathCountMin($path, $count, $message = '')assertNotXpathCountMax($path, $count, $message = '')Les assertions de redirectionsSouvent une action va redirigé le visiteur. Plutôt que de suivre cette redirection,
Zend_Test_PHPUnit_ControllerTestCase vous permet de tester ces redirections avec un jeu
d'assertions :assertRedirect($message = '') : vérifie simplement qu'une redirection est
apparue.assertNotRedirect($message = '') : vérifie qu'aucune redirection n'est
apparue.assertRedirectTo($url, $message = '') : vérifie qu'une redirection est apparue, et
que la valeur de l'en-tête "Location" est l' $url fourni.assertNotRedirectTo($url, $message = '') : vérifie soit qu'aucune redirection n'est
apparue, ou que la valeur de l'en-tête "Location" n'est pas l' $url
fourni.assertRedirectRegex($pattern, $message = '') : vérifie qu'une redirection est
apparue, et que la valeur de l'en-tête "Location" correspond à l'expression régulière fourni
dans $pattern.assertNotRedirectRegex($pattern, $message = '') : vérifie soit qu'aucune redirection
n'est apparue, ou que la valeur de l'en-tête "Location" ne correspond pas à l'expression
régulière fourni dans $pattern.Les assertions d'en-têtes de réponsesEn plus de vérifier les en-têtes de redirection, vous avez souvent besoin de vérifier des codes de réponse
HTTP 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 JSON contient bien l'en-tête Content-Type approprié. Les assertions
suivantes sont disponibles :assertResponseCode($code, $message = '') : vérifie qu'une réponse renvoie le code de
réponse HTTP fourni.assertHeader($header, $message = '') : vérifie qu'une réponse renvoie l'en-tête
fourni.assertHeaderContains($header, $match, $message = '') : vérifie qu'une réponse renvoie
l'en-tête fourni et que son contenu vaut la chaîne fournie.assertHeaderRegex($header, $pattern, $message = '') : vérifie qu'une réponse renvoie
l'en-tête fourni et que son contenu correspond à l'expression régulière fournie.De plus, toutes les méthodes ci-dessus possèdent une variante "Not" qui correspond à
l'assertion négative.Les assertions de requêtesIl 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
:assertModule($module, $message = '') : vérifie que le module fourni a été utilisé
lors de la dernière action distribuée.assertController($controller, $message = '') : vérifie que le contrôleur fourni a été
utilisé lors de la dernière action distribuée.assertAction($action, $message = '') : vérifie que l'action fournie est bien la
dernière distribuée.assertRoute($route, $message = '') : vérifie que la route nommée fournie a été
utilisée par le routeur.De plus, toutes les méthodes ci-dessus possèdent une variante "Not" qui correspond à
l'assertion négative.