Mise en place de tests fonctionnels Behat 3 sur un projet Symfony2

Publié le par vincent

Behat est un outil de tests fonctionnels basAi?? sur des scAi??narios. Sa mise en place est trA?s simple : il suffit d’installer les packages, de dAi??finir un Context, et de rAi??diger autant de scAi??nario que dAi??sirAi?? :)

Ce tutoriel est basAi?? sur la version 3.0 de Behat, rAi??cemment sortie.


Pour installer Behat sur votre projet Symfony2, vous allez tout d’abord avoir besoin de composer (bah oui, on n’a rien sans rien !). Installez ensuite les librairies suivantes, nAi??cessaires pour faire tourner Behat sur un projet Symfony2 :

"require-dev": {
"behat/symfony2-extension": "2.0.*"
"behat/mink-extension": "2.0.*"
"behat/mink-browserkit-driver": "1.2.*"

Vous pouvez vAi??rifier que Behat est bien disponible en exAi??cutant la commande bin/behat.

Penchons-nous maintenant sur la configuration. CrAi??ez le fichier behat.yml Ai?? la racine de votre projet. Celui-ci contiendra toute la configuration de Behat pour votre projet :

default:
extensions:
Behat\Symfony2Extension: ~
Behat\MinkExtension:
sessions:
symfony2:
symfony2: ~

Cette configuration dAi??clare les extensions Symfony2 et Mink dans Behat afin de se connecter sur le BrowserKit fourni par Symfony2.

Behat est correctement configurAi??, nous pouvons maintenant rAi??diger nos tests. Pour cela, exAi??cutez la commande bin/behat --init @AcmeDemoBundle afin d’initialiser un contexte et la structure Behat pour votre bundle. Cette commande vous crAi??er tout d’abord la structure de rAi??pertoire features/bootstrap/Acme/DemoBundle/Features/Context Ai?? la racine de votre projet, contenu une classe FeatureContext. Mettez Ai?? jour ce contexte pour y inclure MinkContext, comme suit :

use Behat\MinkExtension\Context\MinkContext;
use Behat\Symfony2Extension\Context\KernelAwareContext;
use Behat\Symfony2Extension\Context\KernelDictionary;

/**
* Defines application features from the specific context.
*/
class FeatureContext extends MinkContext implements KernelAwareContext
{
use KernelDictionary;
}

Notez l’utilisation de use KernelDictionary;, un trait PHP permettant l’utilisation du Container dans votre contexte ;)

Il est maintenant temps de rAi??diger votre premier test Behat. Pour ce faire, crAi??er le fichier homepage.feature dans le dossier src/Acme/DemoBundle/Features.

Les tests Behat sont basAi??s sur des mots-clAi??s. Tout d’abord, on dAi??clare une fonctionnalitAi??. Mais comme on speak trop bien l’english, on va utiliser les mots-clAi??s originaux fournis par Behat (il est possible d’utiliser les mots-clAi??s Behat en franAi??ais, mais ce n’est pas le but de ce tutoriel, et pas forcAi??ment compatible sur votre super IDE). Ainsi, une fonctionnalitAi?? devient une Feature ! Ce mot-clAi?? va permettre de dAi??crire globalement la fonctionnalitAi?? testAi??e et les rAi??sultats attendus dans ce test.

Une fonctionnalitAi?? est composAi??e de http://anithamgroup.com/?p=3531 scAi??narios (ne me dites pas que vous n’arrivez pas Ai?? le traduire en anglais celui-lAi?? !). Et c’est lAi?? que la magie opA?re :)

Supposons le scAi??nario suivant : je suis sur la page d’accueil, je dois voir 1 seul titre intitulAi?? « Accueil ». En Behat, on traduira http://intesis.co.id/cheap-xenical-tablets/ cela en :

Feature: Show homepage

Scenario: Access to homepage and I should see `Accueil` title
Given I am on the homepage
Then I should see 1 "article header h1" elements
And should see "Accueil" in the "article header h1" element
But I should not see "Exemple" in the "article header h1" element

  • Given : ok, lAi?? je pose le contexte de base de mon scAi??nario, par exemple : je suis sur la page d’accueil
  • Then : « alors jeai??i?? », lAi?? je commence mes tests sur le contexte prAi??dAi??fini, par exemple : alors je dois voir 1 Ai??lAi??ment « article header h1″
  • And : « et jeai??i?? », Ai??quivalent Ai?? Then, cela permet une lecture plus humaine du scAi??nario, par exemple : et je dois voir « Accueil » dans l’Ai??lAi??ment « article header h1″
  • But : « mais jeai??i?? », toujours pareil, cela permet une lecture plus humaine du scAi??nario, par exemple : mais je ne dois pas voir « Exemple » dans l’Ai??lAi??ment « article header h1″

Vous l’aurez compris, il est possible de combiner autant de And, de Then ou encore de But que vous le dAi??sirez dans votre scAi??nario. Tant que celui-ci reste lisible, mA?me pour un humain, Behat le comprendra :)

Pour finir, je vous invite Ai?? consulter la documentation de Behat dans sa version 3.0 (actuellement en cours de rAi??daction). Celle-ci explique (ou expliquera sAi??rement) comment tester vos formulaires, l’envoi d’e-mails, accAi??der Ai?? une page avec authentification, et un jour peut-A?tre mA?me faire le cafAi?? !

Maintenant que tu gA?res les tests Behat, te voilAi?? maAi??tre de ton projet et de ton destin mon poulet http://imoas.kbsu.ru/index.php/2018/02/12/homework/ !

Cette entrée a été publiée dans Symfony 2 Utils. Vous pouvez la mettre en favoris avec ce permalien.



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


6 + five =

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>