ホームページ >バックエンド開発 >PHPチュートリアル >PHP プログラミングで Behat を使用するにはどうすればよいですか?

PHP プログラミングで Behat を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-12 08:39:451460ブラウズ

PHP プログラミングにおいて、Behat は非常に便利なツールであり、プログラマーが開発プロセス中にビジネス要件をより深く理解し、コードの品質を保証するのに役立ちます。この記事では、PHP プログラミングで Behat を使用する方法を紹介します。

1. Behat とは何ですか?

Behat は、言語記述 (Gherkin 言語で記述されたユースケース) を通じて PHP コードを結合する動作駆動開発 (BDD) フレームワークであり、それによってコードとビジネス要件の連携を可能にします。 Behat をテストに使用すると、プログラマは単純な文法と動作の検証から、自然言語を使用してビジネス インスタンスを表現し、これらのインスタンスを自動的に検証することに移行できます。 Behat は、「クライアント」の記述要件と「サーバー」の実装処理を完全に結び付けます。

2. Behat のインストール

composer (PHP パッケージ マネージャー) を使用して Behat をインストールします。プロジェクト ディレクトリでコンソール (ターミナル) を開き、次のコマンドを入力します。

composer require --dev behat/behat

注意: --dev は、Behat が開発で使用されることを示します。運用環境で Behat を使用している場合は、--dev パラメータを追加しないでください。

3. フィーチャーの書き込み

インストールの完了後、APP_PATH/features/ ディレクトリーにフィーチャーを作成できます:

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

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

上記の Gherkin 言語はフィーチャーを記述します。検索を完了して結果を確認する方法を説明する一連のシナリオ (シナリオ)。

4. Behat の設定

設定ファイル config/behat.yml を通じて Behat の設定オプションを定義する必要があります。以下は簡単な設定ファイルです:

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

この設定ファイルは、どの Context クラスを使用する必要があるか、またどの種類のブラウザを使用する必要があるかを Behat に指示します。

5. Context クラスを作成する

フィーチャーで定義されたステップを処理するための Context クラスを作成し、作成されたテスト コードを呼び出してコードの正確さを検証する必要があります。 Codeception と PHPUnit は、Behat をサポートするテスト ライブラリです。PHPUnit を使用して、Context クラスの記述方法を示します。

FeatureContext.php を APP_PATH/features/bootstrap/ ディレクトリに作成し、次のコードを追加します。

<?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);
    }
}

上記のコードは、Feature (シナリオ)が実装されました。

6. テストを実行します

コンソールで次のコマンドを実行します:

vendor/bin/behat

コマンドを実行すると、Behat は次のようになります。 config/behat に基づく .yml ファイル内の設定は、Feature ファイルで実行されます。コンソールにはいくつかの進行状況バーとエラー プロンプトが表示され、最後にテストの合格または失敗の情報がリストされます。

ここでは、PHP プログラミングで Behat を使用してテストを完了する方法を学びました。 Behat を使用すると、ビジネス コードの表現力が向上し、開発プロセス中の品質問題が軽減され、チーム開発のコラボレーションと全体的な開発効率が向上します。

以上がPHP プログラミングで Behat を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。