behat3系の使い方の流れです。
基礎知識
- behatはあくまで、BDDのフレームワーク
- behatそのものはテストメソッドは持ってません
- テストメソッドは、自分で実装するか、エクステンションで導入します。
今回は、はじめてのbehatなので、自分でテストメソッドを実装する場合を解説します。 ちなみに一番情報が詳しいのは本家サイトです。 http://docs.behat.org/en/latest/ ※ 日本語の公式ドキュメントは無いです。何もかもわからなくなったら、ソースを読みましょう。
インストール
composerでインストールします。composer.json
は↓です。
1 | { |
一発簡単
1 | $ composer install |
雛形作成
1 | $ ./bin/behat --init |
こんなディレクトリとファイルが出来てるはず。
1 | features/ |
behatはデフォルトでは実行ディレクトリ直下のfeaturesディレクトリ内の%.feature
ファイルを読み込みます。 features/bootstrap/FeatureContext
には具体的なテストコードを書きます。
テストシナリオを書く。
featuresディレクトリ直下に、.feature
という拡張子で、ファイルを作成します。
1 | $ vi features/sample.feature |
中身
1 | # language: en |
シナリオのポイント
- Gherkin形式なんだということを心に刻む。
- Featureは一つ
- Scenarioという単位でテストを書いていく。
- Scenario配下の3行は、Stepと呼びます。BehatはStepを実行します。
- Step先頭のGiven, When, Thenなどは決まり文句なので、おとなしく従いましょう。
- 動的項目はクォートで囲んでおきます。
- 英語推奨です。
behatコマンドを実行する。
1 | $ ./bin/behat |
シナリオはあるけど、中身がないので、behat
が足りないテストメソッドの雛形を出力してくれる。
FeatureContextを編集する。
1 | vi features/bootstrap/FeatureContext.php |
足りないと言われたメソッドを、そのままコピペ ついでに、これも追記しとく。
1 | use BehatBehatTesterExceptionPendingException; |
もう一回 behatコマンドを実行
1 | $ ./bin/behat |
今度は、シナリオが実行されるが、最初のシナリオ(Givenのところ)で実行が止まっている。 TODO: write pending definition
というコメントが出力されていますが、これはメソッド内でPendingException
をスローすると表示されます。 ようするに、さっきコピペした雛形のメソッドをちゃんと実装して、テストを書いてねということです。 テストを書いて、Pendingのテストを一個ずつ実装すると、テストが完成していきます。
まとめ
駆け足で、behat
のテスト作成の進め方を書きました。 behat
テスト作成の流れは、以上の通りです。
- featureを書く
- behatを実行する
- stepのテストを実装する
この3つの流れを繰返し、行っていくイメージです。 大したことない内容ですが、一応上記のコードはgithubに上げときます。 https://github.com/hanhan1978/behat-sample0