PHP:BDDを試す。Behat+Mink編


PHP:BDDを試す。Behat+Mink編 | Bamboo lath 日々の記録

PHP:BDDを試す。Behat+Mink編

BDDに興味をもったのでまずはbehatを試してみる。

Video: Quickstart to testing with Behat, Mink, and Selenium

上記の動画を参考に写経。

今回の構成
■開発サーバ
OS:CentOS6.5(Vagrant環境:windows7内にある)
IP:192.168.1.226

■composerの設定

適当なフォルダに移動してcomposer.jsonを作成する。
※composer自体はインストールしてるとする。

$ vim composer.json
{
  "require": {
    "behat/behat": "2.4.*@stable",
    "behat/mink": "1.5.*@stable",
    "behat/mink-goutte-driver": "*",
    "behat/mink-extension": "*",
    "behat/mink-selenium2-driver": "*"
  }
}

■behat,minkのインストール

$ php composer.phar install

■behatの設定ファイルであるbehat.ymlを作成

composer.jsonと同じ場所にbehat.ymlを作成する。

$ vim behat.yml
default:
  paths:
    features: features
    bootstrap: %behat.paths.features%/bootstrap
  extensions:
    Behat\MinkExtension\Extension:
      goutte: ~

■behatを初期化(featuresフォルダが作成される)

$ ./vender/bin/behat --init

■test.featureシナリオを作成

※ファイル名は適当です。

$ vim features/test.feature
Feature: Drupal.org search
  In order to find modules on Drupal.org
  As a Drupal user
  I need to be able to use Drupal.org search

  Scenario: Searching for "behat"
    Given I go to "https://drupal.org"
    When I fill in "Search Drupal.org" with "behat"
    And I press "Search"
    Then I should see "Behat Drupal Extension"

■minkを利用するために「FeatureContext.php」を修正

useやextendsを変更

$ vim features/bootstrap/FeatureContext.php
<?php

use Behat\Behat\Context\ClosuredContextInterface,
    Behat\Behat\Context\TranslatedContextInterface,
    Behat\Behat\Context\BehatContext,
    Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode,
    Behat\Gherkin\Node\TableNode;
use Behat\MinkExtension\Context\MinkContext;
//
// Require 3rd-party libraries here:
//
//   require_once 'PHPUnit/Autoload.php';
//   require_once 'PHPUnit/Framework/Assert/Functions.php';
//

/**
 * Features context.
 */
class FeatureContext extends MinkContext
{
    /**
     * Initializes context.
     * Every scenario gets it's own context object.
     *
     * @param array $parameters context parameters (set them up through behat.yml)
     */
    public function __construct(array $parameters)
    {
        // Initialize your context here
    }

//
// Place your definition and hook methods here:
//
//    /**
//     * @Given /^I have done something with "([^"]*)"$/
//     */
//    public function iHaveDoneSomethingWith($argument)
//    {
//        doSomethingWith($argument);
//    }
//
}

■behatを実行

$ ./vendor/bin/behat
Feature: Drupal.org search
  In order to find modules on Drupal.org
  As a Drupal user
  I need to be able to use Drupal.org search

  Scenario: Searching for "behat"                   # features/test.feature:6
    Given I go to "https://drupal.org"              # FeatureContext::visit()
    When I fill in "Search Drupal.org" with "behat" # FeatureContext::fillField()
    And I press "Search"                            # FeatureContext::pressButton()
    Then I should see "Behat Drupal Extension"      # FeatureContext::assertPageContainsText()

1 scenario (1 passed)
4 steps (4 passed)
0m2.492s

とりあえず動いた。
次回はSeleniumを追加してブラウザでの挙動を確認する。

カテゴリー

コメントを残す

メールアドレスが公開されることはありません。