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

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

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

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-5ce5b4340a4208526131 …

no image

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

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

no image

cakeでのJOINについて&session

Contents1 cakeでのJOIN2 cakeでのsessionについて cakeでのJOIN cakePHPでは基本、hasManyなどの修飾子を使えば、リレーションをとることができますが、検 …

no image

mb_convert_encodingに関して(文字コードの自動検出やその周辺)

以前Perlでもやりましたが、文字コードの自動検出に関して。 ちなみにcp932=SJIS-WINです。 参考リンク Perlでの動的改行コード読み込みに関して+cp932ネタ PHPの場合、mb_d …