behat

#behat Table des matières

À propos 1

Chapitre 1: Démarrer avec behat 2

Remarques 2

Examples 2

Test fonctionnel comme user stories 2

Commençant par Behat 2

Étendre Behat avec Mink 4

Tester JavaScript avec Mink et 6

Configuration des données de test 7

Capturer les emails 8

Installation ou configuration 9

Crédits 12 À propos

You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: behat

It is an unofficial and free behat ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official behat.

The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]

https://riptutorial.com/fr/home 1 Chapitre 1: Démarrer avec behat

Remarques

Cette section fournit une vue d'ensemble de ce que c'est, et pourquoi un développeur peut vouloir l'utiliser.

Il devrait également mentionner tous les grands sujets dans Behat, et établir un lien avec les sujets connexes. La documentation de behat étant nouvelle, vous devrez peut-être créer des versions initiales de ces rubriques connexes.

Examples

Test fonctionnel comme user stories

Les tests fonctionnels sont mieux décrits comme des tests pour vos user stories. Si vous avez déjà traité des user stories avant de suivre le modèle suivant:

As a [role], I want to [desire], so that [benefit/desired outcome]

Pour les exemples suivants, nous utiliserons cette user story comme exemple:

As a Dungeon Master, I want to ensure harmony and mutual trust, so that the party can work together as a team

Les deux frameworks de test les plus populaires pour les tests fonctionnels en PHP sont Behat et PHPSpec .

Commençant par Behat

Behat fournit la syntaxe Gherkin qui est un format lisible par l'homme. Il vous permet de décrire facilement vos user stories.

Pour commencer, vous devez l'installer avec puis initialiser vos fichiers de test:

$ composer require --dev behat/behat="^3.0.5"

$ ./vendor/bin/behat --init

+d features # place your *.feature files here +d features/bootstrap # place your context classes here +f features/bootstrap/FeatureContext. # place your definitions, transformations and hooks here

Par défaut, vous placez vos fichiers de test dans le dossier features/ et avez l'extension .feature .

Chaque fichier de test doit définir une caractéristique particulière de l'application. Une https://riptutorial.com/fr/home 2 fonctionnalité est décomposée en un ensemble de scénarios et contient une série d'étapes qui doivent être effectuées avec succès pour que le scénario réussisse. Chaque scénario doit passer pour qu'une fonctionnalité passe.

# features/PartyHarmony.feature Feature: Party Harmony As a Dungeon Master, I want to ensure harmony and mutual trust, so that the party can work together as a team

Scenario: Teach members to respect each others property Given that the Wizard has 10 cookies And the Bard eats 1 cookie Then the Bard is mysteriously on fire

Pour exécuter vos tests, vous exécutez directement le binaire Behat. Nous pouvons éventuellement spécifier le fichier de fonction à exécuter (sinon tous les tests sont exécutés). Ce fichier de fonctionnalité échouera avec des erreurs d'étapes non définies (car nous n'avons pas défini ce que ces étapes signifient):

$ ./vendor/bin/behat features/PartyHarmony.feature Feature: Party Harmony As a Dungeon Master, I want to ensure harmony and mutual trust, so that the party can work together as a team

Scenario: Teach members to respect each others property # features/PartyHarmony.feature:6 Given that the Wizard has 10 cookies And the Bard eats 1 cookie Then the Bard is mysteriously on fire

1 scenario (1 undefined) 3 steps (3 undefined) 0m0.01s (10.49Mb)

--- FeatureContext has missing steps. Define them with these snippets:

/** * @Given that the Wizard has :arg1 cookies */ public function thatTheWizardHasCookies($arg1) { throw new PendingException(); }

/** * @Given the Bard eats :arg1 cookie */ public function theBardEatsCookie($arg1) { throw new PendingException(); }

/** * @Then the Bard is mysteriously on fire */ public function theBardIsMysteriouslyOnFire() { throw new PendingException(); } https://riptutorial.com/fr/home 3 Chaque étape d'un scénario exécute un morceau de code à partir d'un fichier PHP contextuel (différents tests de fonctionnalités peuvent charger différents contextes). Nous pouvons copier les exemples proposés par Behat ou créer nos propres exemples. L'étape correspond à une vérification d'expression régulière. Donc, si nous mettons en œuvre

wizard is a pre-existing condition.... like syphilis $this->wizard->setNumberOfCookies($num); }

/** * @Given the Bard eats :num cookie */ public function theBardEatsCookie($num) { $this->bard->consumeCookies($num); }

/** * @Then the Bard is mysteriously on fire */ public function theBardIsMysteriouslyOnFire() { PHPUnit_Framework_Assert::assertTrue( $this->bard->isBardOnFire() ); } }

Vous remarquerez l'utilisation de PHPUnit_Framework_Assert . Behat n'a pas son propre système d'affirmation, vous pouvez donc utiliser celui que vous voulez.

L'exécution des tests va maintenant exécuter le code actuel et nous pouvons tester si tout passe:

$ ./vendor/bin/behat features/PartyHarmony.feature Feature: Party Harmony As a Dungeon Master, I want to ensure harmony and mutual trust, so that the party can work together as a team

Scenario: Teach members to respect each others property # features/PartyHarmony.feature:6 Given that the Wizard has 10 cookies # FeatureContext::thatTheWizardHasCookies() And the Bard eats 1 cookie # FeatureContext::theBardEatsCookie() Then the Bard is mysteriously on fire # FeatureContext::theBardIsMysteriouslyOnFire()

1 scenario (1 passed) 3 steps (3 passed) 0m0.01s (10.59Mb)

Étendre Behat avec Mink https://riptutorial.com/fr/home 4 Mink fournit une interface pour les pilotes Web (comme Goutte et Selenium) ainsi qu’un MinkContext qui, une fois étendu, fournit un langage Web supplémentaire pour nos étapes.

Pour installer Mink (et le pilote Goutte par défaut):

$ composer require --dev behat/mink-extension="^2.0" $ composer require --dev behat/mink-goutte-driver="^1.0"

Ensuite, MinkContext votre contexte avec MinkContext :

class FeatureContext extends MinkContext … { … }

Vous pouvez voir la liste complète des syntaxes disponibles dans votre installation Behat avec la commande suivante:

$ ./vendor/bin/behat -dl

Given /^(?:|I )am on "(?P[^"]+)"$/ When /^(?:|I )reload the page$/ When /^(?:|I )move backward one page$/ When /^(?:|I )move forward one page$/ When /^(?:|I )press "(?P