新しい連載を始めます。
Laravelは、出来合いのヘルパーやバリデーションがあり便利です。もの凄くたくさんあり覚えらないというほどの数ではないですが、すべてを頭の中で保持しておくのも大変です。また、こういう使い方では結果はどうなるのとか、実際に実行してみないとわからないことあります。
例えば、バリデーションのalpha
は、文字列がすべて英字からなる(本当?)かをチェックします。このバリデーションを、ログイン名のチェックとかに使うとします。しかし、大文字でもOKなのとか、空白文字が入ってもOKなのとか、日本語の入力はどうなのとか、調べないとわからないことあります。Laravelのドキュメントではそこまで細かくは説明していません。
前回で説明したようにtinkerで簡単にチェックすることも可能ですが、面倒だなと思うときに、実例を素早く見ることができれば便利だと思いません?
そこで今回から、そんな便利な実例特集を連載する予定です。まず、その1つを見てください。以下は、Laravelのバリデーションのacceptedのユニットテストです。
実例の使い方
先に掲載したコードは、github.comのgistを使用しています。gistは、一般的にスニペットと言われる、コピペ専用が目的のgitのレポジトリです。gitでコード管理するのと同様、cloneやforkの利用も可能です。
上のコードを実際にテストしてみたいなら、ララベル5.5のプロジェクトを作成して、そのプロジェクトのルートのディレクトリで、以下を実行してください。
$ git clone git@gist.github.com:cf781699c05c73d07fdbff8489052ef8.git tests/Unit/Validations/Accepted
コマンドラインで指定したURLは、
gistの画面において、embedのドロップダウンのリストから、Clone via SSHを指定して、表示されたURLを使います。以下の画面では、赤いボックスのところをクリックしてコピーできます。
コマンドの実行は、以下のように、tests/Unit/Validations/Acceptedのディレクトリを作成して、テストのファイルを作成してくれます。
tests/Unit ├── ExampleTest.php └── Validations └── Accepted ├── 0.md └── AcceptedTest.php
ダウンロードしたところで、テストを実行してみましょう。
$ vendor/bin/phpunit --filter AcceptedTest PHPUnit 6.5.8 by Sebastian Bergmann and contributors. ......... 9 / 9 (100%) Time: 201 ms, Memory: 12.00MB OK (9 tests, 9 assertions)
と9つテストがすべて成功の結果を表示してくれます。
phpunitのデータプロバイダー
先のテストの実行では、9つのテストが成功、とありましたが、9つのテストなるゆえは、上のコードのprovider_accepted
の関数内に9つのデータ配列があるからです。
このユニットテストでは、phpunitのデータプロバイダー機能を使用しています。その機能では、コメントに入れる情報で、どこからデータを受け取るかを指定します。
/** * @test ← 関数がテストの関数であることを指定 * @dataProvider provider_accepted ← この関数からデータを取ってくることを指定 */ public function accepted($input, $expected) { ..
provider_accepted()
では、
例えば、最初のデータ
[[‘field’ => null], false]
は、
[‘field’ => null] が accepted()
の最初のパラメの$input
となり、
falseが、$expected
となります。
テストの実行では、9つのデータ配列があるので、データを変えて9回のテストの実行となります。そして、さらにいろいろテストしたいなら、そのデータと期待する結果をそこに追加すればよいだけです。
バリデーションの実例の連載開始
ということで、次回からバリデーションの実例を投稿していきます。まずは、Laravelにある規定のバリデーションですが、それだけでなくユーザー定義のバリデーションもアップしていく予定です。
メルマガ購読の申し込みはこちらから。