BDD avec Behat

Le framework PHP BDD Behat, vous permet de tester vos applications PHP en utilisant des phrases lisibles par l'homme pour écrire des fonctionnalités et des scénarios sur le comportement de vos applications afin de tester ses fonctionnalités. Nous pouvons ensuite exécuter ces tests pour voir si notre application se comporte comme prévu. Passons environ 15 minutes à parcourir rapidement le processus d'installation de Behat et à apprendre à tester le comportement de nos applications PHP en utilisant les bases.


Installation

Pour commencer les tests avec Behat, il suffit de l’installer sur notre machine de développement locale. J'utiliserai Composer, mais vous pouvez consulter la documentation relative aux méthodes d'installation supplémentaires..

Au sein de votre application PHP (j'ai une application PHP vierge nommée phpbehat créé à l'avance) créer un composer.json fichier avec le code suivant à charger dans Behat:

"require": "behat / behat": "2.4.*@stable", "stabilité minimale": "dev", "config": "bin-dir": "bin /"

Dans votre terminal, nous pouvons l'installer en utilisant la commande suivante:

mise à jour du compositeur

Nous devrions maintenant pouvoir exécuter le bin / behat commande de travailler avec Behat.


Création de fonctionnalités

Nous commençons toujours par créer un nouveau fonctionnalité. Une fonctionnalité est quelque chose que nous pouvons utiliser pour décrire une fonctionnalité de notre application, puis la mettre en œuvre pour que le test réussisse..

Une fonctionnalité, dans sa forme la plus simple, consiste à:

  • Texte clair lisible par l'homme.
  • Utilise un .fonctionnalité extension.
  • Contient les avantages, le rôle et la fonctionnalité de la fonctionnalité.
  • Peut contenir une liste de scénarios.

Maintenant, je ne peux pas vous montrer comment tester toutes les fonctionnalités possibles d'une application, car cela prendrait beaucoup trop de temps. Mais ce que je peux faire est de vous montrer comment écrire une fonctionnalité de base et vous pouvez adapter ce code pour le faire fonctionner pour votre application spécifique..

Test de la classe Phpadder

Pour ne pas compliquer le processus d’apprentissage, créons un outil très simple Phpadder.php fichier qui contient quelques méthodes que nous pouvons utiliser pour additionner deux nombres et afficher leur somme.

classe Phpadder private $ a; private $ b; somme publique $; fonction publique __construct ($ a, $ b) $ this-> a = $ a; $ this-> b = $ b;  fonction publique add () $ this-> sum = $ this-> a + $ this-> b;  fonction publique display () return $ this-> sum; 

Cela crée une nouvelle classe nommée Phpadder. Nous avons quelques propriétés pour tenir le premier ($ a) et deuxieme ($ b) les numéros à ajouter, ainsi qu'un $ somme propriété pour contenir la somme des valeurs.

Ensuite, nous avons notre constructeur qui initialise nos propriétés. Ensuite nous avons un ajouter méthode pour ajouter les deux chiffres ensemble et enfin un afficher méthode pour afficher la somme des deux nombres.

Fonction d'addition

Voyons maintenant ceci Phpadder classe. Créer un nouveau .fonctionnalité fichier avec le code suivant:

# features / phpadder.feature Feature: additionneur Pour afficher la somme de deux nombres Comme n'importe qui, je dois fournir deux nombres

Nous commençons par donner à notre article le nom de additionneur. Ensuite, nous spécifions, sur trois lignes, l’avantage, le rôle et enfin la fonctionnalité elle-même. Il devrait être assez explicite.

Maintenant que nous avons notre fonctionnalité, commençons à écrire nos scénarios.


Création de scénarios

Chaque fois que nous créons une fonctionnalité, nous pouvons définir des scénarios décrivant comment cette fonctionnalité se comporte dans certaines conditions. Les scénarios suivent la même présentation de base comprenant la description du scénario, un contexte, un événement et un résultat..

Créons un scénario pour tester notre Phpadder application:

Scénario: Affiche la somme de deux nombres fournis Étant donné que j'ai le nombre 50 et le nombre 25 Quand je les additionne, je devrais avoir 75

Nous commençons par la description de notre scénario, nous énumérons ensuite les deux nombres de 50 et 25 et, lorsqu'ils sont additionnés, ils doivent afficher la somme de 75.

Vous pouvez également avoir plusieurs contextes, événements et résultats en utilisant les mots-clés suivants: Et et Mais. Voici un exemple modifié du scénario précédent où nous allons utiliser Et:

Scénario: Affiche la somme de deux nombres fournis Étant donné que j'ai le nombre 50 et le nombre 25 Et que j'ai un troisième nombre de 25 Quand je les additionne ensemble, je devrais obtenir 100

Création de définitions d'étape

Une étape n'est rien de plus qu'une fonction PHP composée d'un mot clé, d'une expression régulière et d'une fonction de rappel. Chaque déclaration de votre scénario sera associée à une étape. Ces étapes définissent ce qui devrait se produire étant donné qu'une de vos déclarations est appelée dans un scénario. Vous stockez toutes vos étapes dans la features / bootstrap / FeatureContext.php fichier.

L'étape "donnée"

Dans notre FeatureContext.php fichier (vous devrez peut-être créer ceci), nous devons écrire une étape pour chacune de nos instructions, en utilisant son nom comme nom de fonction. Nous allons commencer avec le "Étant donné que j'ai le numéro" déclaration:

# features / bootstrap / FeaturesContext.php require ("Phpadder.php"); utilisez Behat \ Behat \ Context \ BehatContext, Behat \ Behat \ Exception \ PendingException; utilisez Behat \ Gherkin \ Node \ PyStringNode, Behat \ Gherkin \ Node \ TableNode; la classe FeatureContext étend BehatContext private $ Adder; / ** * @Given / ^ J'ai le numéro (\ d +) et le numéro (\ d +) $ / * / fonction publique iHaveTheNumberAndTheNumber ($ a, $ b) $ this-> Adder = new Phpadder ($ a, $ b); 

Tout d'abord, nous créons un nouveau fichier PHP, exigeons dans notre Phpadder.php file (le fichier que nous testons), puis nous utilisons quelques classes Behat avec utilisation déclarations, juste après.

Ensuite, nous créons notre FeatureContext classe et le faire étendre la BehatContext classe.

Notre classe a une seule propriété, $ Adder, qui tiendra un Phpadder objet.

Enfin, nous créons une méthode pour notre première étape en utilisant le même nom que l’instruction. Notre étape a une expression régulière, trouvée dans le commentaire de la méthode. Cette expression régulière est utilisée pour faire correspondre l'étape à une instruction de scénario. Dans cette méthode, nous assignons simplement un nouveau Phpadder objecter à notre $ this-> Adder propriété de sorte que le reste de nos méthodes ait accès au même Phpadder objet.

Maintenant, vous avez probablement remarqué la @Donné mot clé dans le commentaire de votre fonction, il s’agit en fait d’une annotation permettant d’identifier les différents types d’étapes. Vous pouvez utiliser @Donné, @Quand, et @Ensuite.

Il ne reste plus qu’à écrire les deux dernières étapes.

L'étape "Quand"

/ ** * @When / ^ Je les additionne $ / * / fonction publique iAddThemTogether () $ this-> Adder-> add (); 

Cette étape utilise simplement notre $ this-> Adder objets ajouter méthode pour additionner les deux nombres.

L'étape "alors"

/ ** * @Then / ^ Je devrais obtenir (\ d +) $ / * / fonction publique iShouldGet ($ somme) si ($ this-> Addition-> somme! = $ Somme) lance une nouvelle exception ("somme réelle : ". $ this-> Adder-> sum);  $ this-> Adder-> display (); 

Cette étape commence par vérifier si la somme réelle (récupérée à l'aide de notre $ this-> Adder objet et son somme propriété) est ne pas égal à la somme attendue. Si cela est vrai, cela signifie que Behat doit afficher un échec. Pour ce faire, nous allons simplement lancer une nouvelle exception affichant la somme réelle afin de pouvoir comparer. Sinon, nous appelons notre afficher méthode.

Il est temps de faire les tests.


Lancer les tests

Maintenant que nos fonctionnalités, scénarios et étapes sont définis, exécutons nos tests à l'aide de la commande suivante:

bin / behat

Vous devriez voir les messages de réussite suivants à l'intérieur de votre terminal:


Vous pouvez vous assurer que vos tests fonctionnent correctement, en cassant simplement quelque chose dans votre ordinateur. Phpadder.php fichier afin qu’il ne fonctionne pas exactement de la même façon que votre test l’attend. Par exemple, si nous changeons le ajouter méthode à la place utiliser la soustraction, comme suit:

fonction publique add () $ this-> sum = $ this-> a - $ this-> b; 

Et puis nous relançons nos tests: bin / behat. Vous pouvez voir dans notre terminal que nous avons maintenant un test qui échoue, car il ne s'agit plus d'ajouter nos nombres mais de les soustraire:



Conclusion

En conclusion, vous pouvez suivre un processus en quatre étapes pour tester vos applications PHP avec Behat:

  1. Définir une fonctionnalité
  2. Définir un scénario
  3. Définir les définitions d'étape
  4. Exécutez les tests en utilisant bin / behat

Donc, avec juste cette petite quantité de code, nous devrions maintenant avoir une compréhension de base de la façon de travailler avec Behat pour tester nos applications PHP. Pour plus d'informations sur l'utilisation de Behat, veuillez consulter leur documentation..