skillup

技術ブログ

PHP

Laravelでのテスト

投稿日:

Laravelを使ってUnitTestをする場合の注意点など。

事前準備

まずはアプリのディレクトリにあるphpunit.xmlに下記の記述を追加します。(追加分のみ+で表記。)

上記に使うデータベースを追加し、実際に作ってあげましょう。

テストデータ作成機能

Laravelにはテストデータを作る機能が付いています。(fackerと言うライブラリのようです。)

これを使わなくてもテストをすることができますが、実際にはあると活躍してくれるでしょう。

./database/factories/ModelFactory.php

上記には実際に入力するデータのタイプを決めます。

こうすることで人名なのか、emailなのか、urlなのかと言うことを決定できます。このランダム系の処理はかなり便利だと思います。

どういうデータタイプがあるかは、下記のfakerのドキュメントを見て見ましょう。

https://github.com/fzaninotto/Faker

Perlの時はこれを自力で作ってました、便利ですね・・・・

実際のテストコード

./tests/Unit/HelloTest.php

ちなみにテストコードの雛形は

で作れます。

一般的に./tests/FeatureにはControllerのテストが入ることが多いようで、サンプルとしてある.ExampleTestにはそのような処理が書かれていますね・・・。

./tests/UnitTestには上記のようなモデルのメソッドを書いたUnitTestを書くようです。

上記でやっていることは、下記のような流れです。

  • Laravelのmigrationは使わない(経験上使わなくなり、コードの定義と実際のデータベースの差分が出てしまう)ためuse DatabaseMigrationsをコメントアウト
  • setUpでテスト実行前の処理を記述、tearDownでテスト終了後の処理を記述する。
  • setUpにはダミーデータを入れる処理、tearDownにはtruncateの処理を書く。

比較的楽に実装することができました。マイグレーションに関してはコードからデータベースを作れるらしいので慣れればこれでやった方がいいかもしれません・・・私はやっていませんが。

あとはアプリのディレクトリ直下で

と実行すれば全メソッドが走り下記のような結果が出力されます。

Cakeの時も思いましが、もっと早く知っておくべきでしたね・・・これがあると一つのメソッドを作るのが格段に便利になります。

Faker@PHPでダミーデータを作る

PHPフレームワーク Laravel入門

-PHP
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

mb_convert_kanaによる半角濁点の処理

PHPネタです。 濁点を処理するときに、カナ本体と濁点が分離していることが多々あります。 一般的には濁点と文字自体を混合させるケースのほうが多いので統一する必要性があるでしょう。 これを1文字にまとめ …

no image

PHPでのコンソール入力に関して

PHPはほとんどの場合、ブラウザでURLをたたいてWEBサーバーから呼び出されるパターンがほとんどです。 ところが、コンソールから使いたい場合などもあるでしょう。 コンソールから入力する場合、なんらか …

no image

php5.6のインストール+cake3でのbake

cake3を動かしたい場合、PHP5.4以上でないと動きません。 2016年1月現在、CentOS6でyumでPHPをインストールする場合、php5.3ですので、5.4以上を入れる場合、別のリポジトリ …

no image

Laravelの認証(独自テーブル仕様)

Laravelで独自の認証をしたいときに少々大変だったのでメモなどを。 *ディフォルトのテーブルはuserで認証項目もemailとpasswordと決まっています。 いじるところが色々ありまして、列挙 …

no image

laravelでのredis活用

以前下記エントリーでredisの活用について書きました。 インメモリデータベース redis 一般的な使用法ですと登録できるデータはstring,list,hashのような比較的単純な形しか登録できな …