>백엔드 개발 >PHP 튜토리얼 >PHP 프로그래밍에서 Behat을 사용하는 방법은 무엇입니까?

PHP 프로그래밍에서 Behat을 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-06-12 08:39:451460검색

PHP 프로그래밍에서 Behat은 프로그래머가 개발 과정에서 비즈니스 요구 사항을 더 잘 이해하고 코드 품질을 보장하는 데 도움이 되는 매우 유용한 도구입니다. 이 기사에서는 PHP 프로그래밍에서 Behat을 사용하는 방법을 소개합니다.

1. 베하트란?

Behat은 언어 설명(Gherkin 언어로 작성된 사용 사례)을 통해 PHP 코드를 결합하여 코드와 비즈니스 요구 사항이 함께 작동할 수 있도록 하는 BDD(행동 중심 개발) 프레임워크입니다. 테스트에 Behat을 사용하면 프로그래머는 단순한 문법 및 동작 확인에서 자연어를 사용하여 비즈니스 인스턴스를 표현하고 이러한 인스턴스를 자동으로 확인하는 방식으로 전환할 수 있습니다. Behat은 "클라이언트"의 설명 요구 사항과 "서버"의 구현 처리를 완벽하게 연결합니다.

2. Behat 설치

작곡기(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

이 구성 파일은 Behat에게 어떤 Context 클래스를 사용해야 하는지, 어떤 종류의 브라우저를 사용해야 하는지 알려줍니다.

5. Context 클래스 작성

Feature에 정의된 단계를 처리하기 위해 Context 클래스를 생성하고 작성된 테스트 코드를 호출하여 코드의 정확성을 확인해야 합니다. Codeception과 PHPUnit은 Behat을 지원하는 일부 테스트 라이브러리입니다. PHPUnit을 사용하여 Context 클래스를 작성하는 방법을 보여드리겠습니다.

APP_PATH/features/bootstrap/ 디렉터리에 FeatureContext.php를 생성하고 다음 코드를 추가합니다.

<?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 파일의 구성에 따라 기능 파일을 실행합니다. 콘솔에는 진행률 표시줄과 오류 메시지가 표시될 수 있으며 마지막으로 테스트 통과 또는 실패 정보가 나열됩니다.

여기서 우리는 PHP 프로그래밍에서 Behat을 사용하여 테스트를 완료하는 방법을 배웠습니다. Behat을 사용하면 비즈니스 코드의 표현력이 향상되고, 개발 과정에서 품질 문제가 줄어들며, 팀 개발 협업 및 전반적인 발전 효율성이 향상됩니다.

위 내용은 PHP 프로그래밍에서 Behat을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.