Comment utiliser Behat en programmation PHP ?

WBOY
Libérer: 2023-06-12 09:22:02
original
1370 Les gens l'ont consulté

En programmation PHP, Behat est un outil très utile, qui peut aider les programmeurs à mieux comprendre les exigences métier pendant le processus de développement et à garantir la qualité du code. Dans cet article, nous présenterons comment utiliser Behat dans la programmation PHP.

1. Qu'est-ce que Behat ?

Behat est un framework de développement piloté par le comportement (BDD) qui couple le code PHP via une description du langage (cas d'utilisation écrits en langage Gherkin), permettant ainsi au code et aux exigences métier de fonctionner ensemble. L'utilisation de Behat pour les tests permet aux programmeurs de passer d'une simple vérification de grammaire et de comportement à l'utilisation du langage naturel pour exprimer des instances métier et vérifier automatiquement ces instances. Behat relie parfaitement les exigences de description du « client » et le traitement d'implémentation du « serveur ».

2. Installation de Behat

Utilisez composer (gestionnaire de packages PHP) pour installer Behat. Ouvrez la console (terminal) dans le répertoire du projet et entrez la commande suivante :

composer require --dev behat/behat

Rappel : --dev signifie que Behat est en cours de développement utiliser. Si vous utilisez Behat dans un environnement de production, vous ne devez pas ajouter le paramètre --dev.

3. Write Feature

Après avoir terminé l'installation, nous pouvons créer une fonctionnalité dans le répertoire APP_PATH/features/ :

Feature: 搜索
  我想在“首页”上搜索某个商品
  为了快捷找到我需要的商品
  我需要查询到相应结果

  Scenario: 搜索结果是正确的
    Given 我在“首页”页面
    When 我输入“水杯”作为搜索关键字
    And 我点击“搜索”按钮
    Then 我应该看到网页标题包含“水杯”
Copier après la connexion

Le langage Gherkin ci-dessus décrit Une fonctionnalité contient un ensemble de scénarios (scénarios) qui décrivent comment effectuer une recherche et vérifier les résultats.

4. Configurer Behat

Nous devons définir les options de configuration de Behat via le fichier de configuration config/behat.yml. Ce qui suit est un fichier de configuration simple :

default:
  suites:
    default:
      contexts:
        - FeatureContext
      filters:
        tags: ''
  extensions:
    BehatMinkExtension:
      base_url: "http://localhost/"
      files_path: "%paths.base%/persistent/files"
      goutte: ~
      selenium2: ~
    BehatSymfony2Extension:
      kernel:
        env: test
        debug: true
Copier après la connexion

Ce fichier de configuration indique à Behat quelle classe de contexte doit être utilisée et quel type de navigateur doit être utilisé.

5. Écrivez la classe Context

Nous devons créer une classe Context pour gérer les étapes définies dans la fonctionnalité et appeler le code de test écrit pour vérifier l'exactitude du coder. Codeception et PHPUnit sont des bibliothèques de test qui prennent en charge Behat. Nous utiliserons PHPUnit pour montrer comment écrire la classe Context.

Créez FeatureContext.php dans le répertoire APP_PATH/features/bootstrap/ et ajoutez le code suivant :

<?php

use BehatBehatContextContext;
use BehatBehatHookScopeBeforeFeatureScope;
use BehatBehatTesterExceptionPendingException;
use BehatMinkWebAssert;
use BehatMinkExtensionContextMinkContext;
use PHPUnitFrameworkAssert as PHPUnit;

class FeatureContext extends MinkContext implements Context
{
 
    public function __construct($baseUrl)
    {
        $this->baseUrl = $baseUrl;
    }
 
    /**
     * @param BeforeFeatureScope $scope
     */
    public static function setup(BeforeFeatureScope $scope)
    {
        // 配置数据库等其他代码
    }

    /**
     * @Given /^我在“(.*)”页面$/
     */
    public function 在页面($page)
    {
        $this->visitPath(sprintf('/%s', $page));
    }

    /**
     * @When /^我输入“(.*)”作为搜索关键字$/
     */
    public function 输入作为搜索关键字($keyword)
    {
        $page = $this->getPage();
        $searchForm = $page->find('css', 'form[action="/search"]');
        $searchInput = $searchForm->find('css', 'input[type="text"]');
        $searchInput->setValue($keyword);
    }

    /**
     * @When /^我点击“(.*)”按钮$/
     */
    public function 点击按钮($button)
    {
        $page = $this->getPage();
        $button = $page->find('css', sprintf('input[type="submit"][value="%s"]', $button));
        $button->click();
    }

    /**
     * @Then /^我应该看到网页标题包含“(.*?)”$/
     */
    public function 应该看到网页标题包含($expected)
    {
        PHPUnit::assertTrue(stripos($this->getSession()->getPage()->getTitle(), $expected) !== false);
    }
}
Copier après la connexion

Le code ci-dessus définit un ensemble d'étapes (étapes) pour Feature The Le scénario défini est mis en œuvre.

6. Exécutez le test

Exécutez la commande suivante dans la console :

vendor/bin/behat

Exécutez la commande Enfin, Behat exécutera le fichier Feature selon la configuration dans le fichier config/behat.yml. La console peut avoir des barres de progression et des invites d'erreur, et enfin les informations de réussite ou d'échec du test seront répertoriées.

Ici, nous avons appris à utiliser Behat en programmation PHP pour réaliser des tests. L'utilisation de Behat peut améliorer l'expressivité du code métier, réduire les problèmes de qualité pendant le processus de développement et améliorer la collaboration en matière de développement en équipe et l'efficacité globale de l'avancement.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!