15分で完成します。
出来るんです!むしろお釣りが来ます!
準備
- PHP(5.3.1以降) よく訓練されたペチパーであれば5.6を使っているはずなので、問題ない。
- composer よく訓練されたペチry)
- テスト対象のWebアプリ 既存Webアプリでテストが無いやつをご用意下さい。いっぱいあるでしry)
オーバービュー
E2Eテストを別プロジェクトとして、作成する想定。 練習なので、まずはbehat
が利用する最低限のファイル群について、知ってほしい。 Behatは3系を使います。
ファイル構成
1 | . |
この中で、自分で編集作業を行うファイルは、以下の3つ
composer.json
behat.yml
features/sample.feature
ざっくりとした説明
composer.json
behat
とMinkExtention
をcomposer
経由でダウンロードします。
MinkExtention
はウェブのE2Eテスト用のextensionです。behat.yml
いわゆるbehat
の設定ファイルです。
behat
コマンド実行時に引数で指定しない場合は、デフォルトでこのファイルが読み込まれます。features/sample.feature
テスト用のシナリオをGherkin
発音(gˈɚːkɪn)形式で記述します。
編集はしないけど、知っておいてほしいファイル
features/bootstrap/FeatureContext.php
テスト用のシナリオ実行用関数は、ここに記述します。
今回は、MinkExtention
のものをそのまま使うので、デフォルトのままです。
テスト作成への道のり
上記3ファイルを手順に沿って、機械的に編集していけばOK。 細かい注意事項については、本ポストの最後にリストアップしておきます。
実作業
最初にsample
とか何でもいいのですが、プロジェクトのルートディレクトリを作成して下さい。
以下の手順は、そのルートディレクトリ内で行います。
1. composer.json
の作成とcomposer
の実行
composer.json
1 | { |
下記のコマンドで、ライブラリー群をインストール
1 | composer install |
※composer
が分からない人は、反省する。
実行後は、bin
ディレクトリ内にbehat
コマンドのシンボリックリンクが出来ていることを確認して下さい。
2. behat.yml
を作成し、init
コマンドを実行する。
behat.yml
1 | default: |
今回は最小限で、かつ基本に忠実な内容です。 featuresのpath
はデフォルトと同じでfeatures
です。
bootstrapのディレクトリ指定時に%%で囲まれている部分は、動的にbehatの設定内容を参照しています。
今回の場合は、すぐ上で定義されているfeaturesの内容を指しています。
behat.ymlを作ったら、下記のコマンドを実行して、基本的なfeaturesの雛形を作ります。
1 | ./bin/behat --init |
コマンド実行後は、features
,features/bootstrap
というディレクトリが作成されていて、bootstrap
ディレクトリ内にFeatureContext.php
が出来ていることを確認して下さい。
3. behat.yml
にextensionの読み込みを追記する。
まず、試しに以下のコマンドを実行して下さい。
1 | ./bin/behat -dl |
これは、behatで使えるStepを一覧表示するコマンドです。 何も表示されないはずです。
自動生成されたFeatureContext
は、空の状態です。 MinkExtension
についても、Contextの利用をbehat.yml
に記述していないので、表示されません。 MinkExtension
のE2Eテスト用Stepを利用するために、behat.yml
を少し修正します。 修正後のbehat.yml
1 | default: |
もう一度、下記のコマンドを実行して下さい。
1 | ./bin/behat -dl |
ずらずら〜っと、Stepが出てきたと思います。 この時、もしStepが日本語で表示されている場合は、言語のオプションを付けて下さい。
1 | behat -dl --lang en |
※個人的な好みですが、英語でシナリオ書くほうが見通しが良くて好きです・・・。
4. features/sample.feature
sample.feature
は適当な命名に変更して構いません。拡張子が.feature
であれば問題ないです。
今回は、サンプルとしてyahooファイナンスにアクセスして、銘柄コードを確認するテストを書きます。
※Yahooの人怒ったら、教えて下さい。違うのに変えます・・・。
1 | # language : en |
Featureは.featureファイルに一度だけです。
テストケースを増やす時は、Scenarioを増やして下さい。 Gherkinの文法は下記の本家docを参照下さい。
behat
コマンドを実行します。
1 | $ ./bin/behat |
上手くいっていれば、このように実行結果が表示されます。
後は、同じ要領でシナリオを追加すれば、テストが増やせます。簡単ですね!
まとめ
E2Eテストが、PHPのみをつかって、こんなにも簡単に、スピーディにつくれてしまいました。
こんなに簡単だと、もはや使わない理由が見当たらないですね。