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

phpmdによるコードチェック

現在のプロジェクトですが、コードレビューなどをされる環境にはないため、一人で書いていると自然と規約とずれた書き方になっていることもあります。 規約通りに書こう、書こうと思っていてもなかなかその通りに書 …

no image

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

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

no image

composer.jsonのautoloadに関して

昔PHPでは他のファイルを読み込む時にはrequire_onceなどとすることが一般的でした。 で、クラスが増えてくるとこれがとんでもない量になってくるんですよね・・・ その時の代替案として_auto …

no image

PHPのPDFライブラリに関して。

今月PHPでPDFを出力する要件があったんで色々見てきましたので、まとめを。 昨年もちょっとやりましたが、色々と面倒です。 fpdfはかなり古くダメダメっぽいですね。昨年はじめにPDFを使う要件があっ …

no image

LaravelでのAPI実装

Laravelで外部からAPI叩いてデータ入力みたいなことをしたかったのでこれを機に勉強。認証とかを通してないのでそのまま公開すると危険です・・(汗) 参考リンク [PHP] Laravel5.6で、 …

アーカイブ