laravel5.5でテストのやり方

laravel5.5でテストのやり方

1, laravelでは最初からphpunitを拡張したテスト機能が実装されている

2, テストのやり方は、いつもphp artisanと入力しているコマンドライン上から vendor/bin/phpunit と入力すれば勝手にテストしてくれる。

3, テスト内容が実装されているのは、testsフォルダ内のFeature(機能テスト)とUnit(クラス単位)のテストの2種類がある。
tests
├─Feature
│ ExampleTest.php ←←← 機能をテスト

├─Unit
│ ExampleTest.php ←←← 単体機能をテスト
│ CreatesApplication.php
│ TestCase.php ←←← テストの前処理・後処理を記述(テストレコードの生成・変更・削除など。Setup(前処理)→テストメソッド→tearDown(後処理))

4, 新しくテストphpファイルを作るには、artisanで以下のようにして作る(–unitでユニットテスト。なければFeature)

5, とりあえず、Feature/ExampleTest.phpに追記
実行して問題がない事を確認する。一度記述すれば何回でも自動的にテストしてくれる。

参考URL: https://qiita.com/amymd/items/0a5f2705e29972d0d22e
6, 画面遷移などを伴うブラウザテスト(UIテスト、E2Eテスト)は、laravel5.4から導入されたlaravel Duskというパッケージを使う。
Dusk(ダースク) = twilight(たそがれ、太陽が沈んだけど、まだ明るい時間帯)の後半。暗くなる直前の事。もうすぐ終わりだよ~ってニュアンスか?
https://readouble.com/laravel/5.5/ja/dusk.html

6-a, 例によって、composer.jsonに、”laravel/dusk”: “^2.0″を追加してから、composer updateする
最新のlaravel/duskは4系だけど、3系以降はlaravel5.6以上が必要なのでエラーになる。なので2系を使うのしかない。
バージョン指定に、^(チルト)と~(キャレット)が混ざってて紛らわしい…。基本的に指定バージョン以上って意味だけど、微妙に違うのか?
http://blog.a-way-out.net/blog/2015/06/19/composer-version-tilde-and-caret/

6-b, php artisan dusk:install でduskに必要なファイル類をプロジェクトに追加(testsフォルダ内に、DuskTestCase.phpとBrowserフォルダが追加される)
以後は、php artisan duskコマンドが使えるようになる。

6-c, php artisan duskコマンドを使ってみると、エラーが…。
Facebook\WebDriver\Exception\UnknownServerException: unknown error: cannot find Chrome binary

Facebook/Webdriverが~、 Chrome binaryが~とエラーを吐く…。
Chrome binaryってなんだよ~。と思って調べてみたら、要するにテストコードでコマンドライン上でブラウザテストするから、ブラウザとしてchrome機能が必要らしい。
compserって、パッケージ依存関係管理ツールじゃないのかよ~と文句を言いつつ、rootになってサーバにインストールしたけど解決しない…。

色々とやってダメだったので、composer.jsonから一度削除してcomposer updateで削除。最初からやり直したら何故か上手く行った、なぜ?

6-d, tests/Browser/ExampleTest.phpファイルにサンプルがあるので、デフォルトと違う場合は適当に修正して、php artisan duskコマンドからエラーが出ないようにする。

7, テストしたい項目別にテストファイルを作る。

tests/Browser/LoginTest.phpというファイルが生成されるので、自分の実装に合わせてログイン処理を書き込む

8, php artisan duskしてエラーが出なければOK!これでブラウザの自動テストが出来るようなった!

ブラウザ操作は、ここにまとめて書いてあるので、色々と試せる。
https://readouble.com/laravel/5.5/ja/dusk.html