/sfBehatPlugin

BDD in symfony by Behat

Primary LanguagePHPMIT LicenseMIT

sfBehatPlugin

Cucumber-style BDD in symfony.

sfBehatPlugin is a plugin for symfony applications. It help to write Cucumber-like Behat features to test symfony applications.

Prerequisites

  1. Behat is written on PHP 5.3, so you need PHP 5.3.2 to run your features;
  2. You need Behat itself. Installation instruction is at http://everzet.com/Behat;
  3. You need PHPUnit 3.5.0 to be available in your PATH.

Installation

Using symfony:plugin

Use this to install as a plugin in a symfony app:

$ symfony plugin:install sfBehatPlugin

Using git clone

Use this to install as a plugin in a symfony app:

$ cd plugins && git clone git://github.com/everzet/sfBehatPlugin.git

Using git submodules

Use this if you prefer to use git submodules for plugins:

$ git submodule add git://github.com/everzet/sfBehatPlugin.git plugins/sfBehatPlugin

and enable plugin in your ProjectConfigurations class.

Usage

Prepare

After installation, you need to create features folders for your applications inside symfony's test folder. To do this, simply run:

symfony behat:setup frontend

where frontend is your application name.

Generate Features

To begin with Behat, you need to create your first feature file. Run:

symfony behat:generate-feature frontend main

where frontend & main is your application & module names to test

Run Features

You can either run all app tests with:

behat test/features/frontend

or specific feature with:

behat test/features/frontend/main.feature

or all frontend features with simply:

behat

sfBehatPlugin installs behat.yml into your project root. This is a Behat configuration file for sf environment. So, if you want to run your symfony features from different directory - specify configuration path manually with (-c|--configuration option) like that:

behat -c ../behat.yml

Write Features

Write New Steps

You can create new steps simply by placing definitions in any *.php file under steps/ folder in your app features.

Specify App Routes

sfBehatPlugin has base steps to run over your application. One of them is /^I am on(?: the)? (.*)$/. This step tries to load specified page as is, but you can specify path manually in support/paths.php:

<?php
$this->pathTo = function($page) use($world) {
    switch ($page) {
        case 'homepage':        return '/';
        case 'articles list':   return '/articles';
        default:                $page;
    }
};

Contributors

Behat is maintained by ever.zet http://github.com/everzet