CakeBehat

https://github.com/oppara/CakeBehat
もろもろ動かなかったのでとりあえずフォーク

インストールとか

直の場合

% cd /path/to/cake_root/app/Plugin
% git clone https://github.com/oppara/CakeBehat.git

submoduleの場合

% cd /path/to/cake_root
% git submodule add https://github.com/oppara/CakeBehat.git app/Plugin/CakeBehat
% git submodule update --init  app/Plugin/CakeBehat

composer, behatとかのインストール

% cd /path/to/cake_root/app/Plugin/CakeBehat
% curl http://getcomposer.org/installer | php
% php composer.phar install

app/Config/bootstrap.php に以下を追加

CakePlugin::loadAll();


確認(CakeBehatのメニューが表示されること)

% cd /path/to/cake_root/app
% ./Console/cake

Welcome to CakePHP v2.4.1 Console
---------------------------------------------------------------
App : app
Path: /srv/httpd/cake.local/app/
---------------------------------------------------------------
Current Paths:

 -app: app
 -working: /srv/httpd/cake.local/app
 -root: /srv/httpd/cake.local
 -core: /srv/httpd/cake.local/lib

Changing Paths:

Your working path should be the same as your application path. To change your path use the '-app' param.
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp

Available Shells:

[CakeBehat] bdd, init

実行

初期化(behat.ymlとfeaturesディレクトリのコピー)

% cd /path/to/cake_root/app
% ./Console/cake CakeBehat.init

Welcome to CakePHP v2.4.1 Console
---------------------------------------------------------------
App : app
Path: /srv/httpd/cake.local/app/
---------------------------------------------------------------
copy /srv/httpd/cake.local/app/Plugin/CakeBehat/features to Cake app/Test...
copy behat.yml to App/Config...

実行

% cd /path/to/cake_root/app
% ./Console/cake CakeBehat.bdd

Welcome to CakePHP v2.4.1 Console
---------------------------------------------------------------
App : app
Path: /srv/httpd/cake.local/app/
---------------------------------------------------------------
シナリオがありません
ステップがありません
0m0.034s

フィーチャ、ステップ例

# language: ja
フィーチャ: ログイン

  シナリオ: ログインとログアウトが出来ること
    前提"/login" を表示している
    ならば PHPエラーが表示されていないこと
    かつ "ログイン" と表示されていること
    かつ "email" フィールドに "admin@example.com" と入力する
    かつ "password" フィールドに "password" と入力する

    もし "ログイン" ボタンをクリックする
    ならば PHPエラーが表示されていないこと
    かつ "HOME" と表示されていること

    もし "ログアウト" のリンク先へ移動する
    ならば PHPエラーが表示されていないこと
    かつ "ログイン" と表示されていること

features/steps/php_error.php

<?php

$steps->Given('/^PHPエラーが表示されていないこと$/', function($world) {
    return array(
        new Behat\Behat\Context\Step\Then('"Warning" と表示されていないこと'),
        new Behat\Behat\Context\Step\Then('"Notice" と表示されていないこと')
    );
});