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

テンプレートエンジンTwigについて

SmartyにかわるテンプレートエンジンとしてTwig(ツィッグ)を勉強中。 といってもテンプレートエンジンなので基本的なことはほとんど一緒っぽいですが。 Contents1 インストール2 基本的な …

no image

heroku+cakePHPによるメール送信

herokuに作ったアプリでメール送信機能を実装したのでその時のメモを。 まずメール送信自体はmb_send_mailなどではなく、SendGridというアプリを使います。 使い方ですが、heroku …

no image

PHPでのメール送信&カレントディレクトリ

PHPの小ネタ集です。 Contents1 メールでの改行2 PHPでのカレントディレクトリ メールでの改行 メールで改行する場合、いつも\nでOKだったんですが、本日これで送信すると送れないというバ …

no image

phpのライブラリ(mcrypt)インストール

先日、ローカルで開発していたPHPをサーバーにアップして、composerでライブラリをアップデートしようとしたところ、”The mcrypt extension is missing. …

no image

cake3でのバッチスクリプト

以前、cakeでのバッチをこちらのエントリーで書きましたが、今回は3系でのバッチの書き方について。 といってもほとんど同じですが・・・ Contents1 ディレクトリ2 ソース ディレクトリ src …