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

CakePHP3系でのテスト処理

以前CakePHP2系のテストは書きましたが、3系は若干仕様が違いますので、3について書こうと思います。例によってエントリーレベルですが。 Contents1 準備1.1 phpunit1.2 テスト …

no image

PECLに関して

PHPのライブラリを入れようとするとたまに出てくるPECLに関して。 最近でもメールパーサーを入れた時に出ましたね。 [PHP]pecl,phpize,extensionという単語を見て頭痛がするあな …

no image

phing

今までphpunit,phpmd,phpcodesniffer,phpdocumentなどのツールをいろいろと試してきますが、個別に動かしていると大変面倒ですので、これを一気に行えるライブラリがありま …

no image

Shift_JISの5C問題について 全角ハイフンでエスケープ

エンジニアであればだれもが頭を悩ませる文字コード。 私も初期のころはこれのせいでデータが入らないとかおかしくなるなんてことがさんざんありました。 今でも文字コードに遭遇することはあるんですが大体のパタ …

no image

PHPエルビス演算子

PHP エルビス演算子について えープログラムでよくあるnullかどうかをチェックしてnullじゃなければその値を使い、そうじゃなければディフォ値を使うみたいな処理 例えばPOSTを受けてそれを変数で …