Maison >développement back-end >tutoriel php >Comment utiliser Behat pour les tests BDD en PHP

Comment utiliser Behat pour les tests BDD en PHP

WBOY
WBOYoriginal
2023-06-27 09:27:171250parcourir

BDD (Behavior-Driven Development) est un modèle de développement très populaire. Il met l'accent sur l'expression en langage naturel des exigences et des comportements et garantit l'exactitude du développement à travers des cas de test. Behat est un outil courant pour utiliser BDD en PHP. Cet article explique comment utiliser Behat pour les tests BDD en PHP.

1. Installer Behat

Pour installer Behat, vous devez utiliser Composer. Ouvrez le terminal et entrez la commande suivante :

composer require --dev behat/behat

Cette commande installera Behat et ses packages de dépendances dans votre projet.

2. Créer un fichier de configuration Behat

Behat a besoin d'un fichier de configuration pour exécuter les tests, exécutez la commande suivante :

vendor/bin/behat --init

Ensuite, un fichier de configuration nommé behat.yml sera créé.

3. Créer des cas de test

Les cas de test Behat sont écrits sur la base du langage Gherkin. Gherkin est un DSL en langage naturel qui peut décrire le comportement et les exigences d'un logiciel. Par exemple, ce qui suit est un scénario de test simple au format Gherkin :

Feature: 登录
  作为一个网站用户,
  我希望能够登录到网站。

  Scenario: 正确的用户名和密码
    Given 我在登录页面
    When 我输入正确的用户名和密码
    Then 我能成功登录

Ensuite, créez un répertoire de fonctionnalités et créez un fichier de scénario de test nommé login.feature dans ce répertoire.

4. Créer des définitions d'étape

Step Definitions est le pont entre les cas de test Behat et le code PHP, il convertit les cas de test en code exécutable. Exécutez la commande suivante pour générer un fichier de définitions d'étape :

vendor/bin/behat --append-snippets

Ensuite, Behat vous demandera d'ajouter du code au fichier FeatureContext.php, qui se trouve dans le répertoire Features/bootstrap.

Par exemple, dans le cas de test ci-dessus, les définitions d'étape peuvent être implémentées comme :

<?php
use BehatBehatContextContext;
use BehatBehatTesterExceptionPendingException;
use BehatBehatHookScopeAfterScenarioScope;
use BehatMinkExtensionContextMinkContext;
use BehatTestworkHookScopeBeforeSuiteScope;
use BehatchContextJsonContext;
use BehatchContextRestContext;
use DotenvDotenv;

/**
 * Feature context.
 */
class FeatureContext extends MinkContext implements Context
{
    private $baseUrl;

    /**
     * @BeforeSuite
     */
    public static function loadEnvironmentVariables(BeforeSuiteScope $scope)
    {
        if (is_readable(__DIR__ . '/../../.env')) {
            (new Dotenv(__DIR__ . '/../../'))->load();
        }
    }

    /**
     * @BeforeScenario
     */
    public function before(AfterScenarioScope $scope)
    {
        $this->baseUrl = getenv('BASE_URL');
    }

    /**
     * @Given 我在登录页面
     */
    public function 我在登录页面()
    {
        $this->visit($this->baseUrl . '/login');
    }

    /**
     * @When 我输入正确的用户名和密码
     */
    public function 我输入正确的用户名和密码()
    {
        $this->fillField('用户名', 'admin');
        $this->fillField('密码', 'password');
        $this->pressButton('登录');
    }

    /**
     * @Then 我能成功登录
     */
    public function 我能成功登录()
    {
        $this->assertPageContainsText('欢迎回来');
    }
}

5. Exécutez le test

Exécutez la commande suivante pour exécuter le test :

vendor/bin/behat

Si le test s'exécute avec succès, les résultats sont similaires à ceux du test. Le message suivant s'affichera :

1 scenario (1 passed)
3 steps (3 passed)

Si le test échoue, utilisez le message d'erreur pour résoudre le problème.

Conclusion

En utilisant les langages Behat et Gherkin pour les tests, le comportement et les exigences du logiciel peuvent être décrits plus facilement, et les tests peuvent être exécutés automatiquement, réduisant ainsi le coût et la durée des tests manuels. Dans les projets PHP, Behat est un outil de test BDD très pratique qui peut aider les développeurs à garantir la qualité et l'exactitude des logiciels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn