UnitTest for Laravel

ども、カロージです。

前回のLaravel のテストの種類とその方法についての続きの記事になります。

今回は、Laravel Unit テストの具体的な内容について説明したいと思います。

 

はじめに

Laravelでのテスト実行には以下の3種類が存在しますが、

この3つのテストの内の1番目になります。

  1. UnitTest
  2. FeatureTest
  3. BrowserTest

環境面や前提としてインストールが必要なパッケージなどは、

前回の記事をご参照下さい。

 

おさらい

Unit Test

単体(Unit)テストは一つのメソッドが焦点で、最も細かい粒度でのテストになります。

実態としては、PHPUnitの拡張版で、最初からLaravelに含まれており、

プロジェクトファイル直下にphpunit.xmlファイルも最初から装備されています。

個人的には、開発したクラスとテスト用クラスが、1対1になる様にファイルを生成すると管理しやすいです。

 

Unit Test 実装について

実装方法は、色々ありますが、私が良くやる方法です。

例えば、プロジェクトフォルダのapp 直下に「libs」というフォルダがあり、

libsフォルダの下に各ライブラリとなるPHPファイルや、ユーティリティとなるPHPファイルを格納したとします。

こんな感じのディレクトリ構成ですね。

ルート(プロジェクトフォルダ)-> app -> libs -> Utility.php

 

Utility.php の中身は、以下の様な感じだとします。

シンプルに、コンストラクタと「getToken」というメソッドしかありませんね。

この「getToken」というメソッドに対し、テストを記述します。

手順的には以下な感じです。

  1. テスト用ファイルの生成
  2. 生成したファイルにテストコード追記
  3. テストの実行

 

 

1.テスト用ファイルの生成

まず、以下のコマンドにより「Utility.php」のUnitテスト用ファイルを生成します。

コマンド実行により、プロジェクトに「UtilityTest.php 」ファイルが生成されます。
※ルート(プロジェクトフォルダ)-> tests->Unit->UtilityTest.php

「UtilityTest.php」ファイルの中を覗いて見ると以下の様な記述になっているので、これに追記していきます。

2.テストコード追記

例えばですが…
「getToken」というメソッドを見ると、数値を引数にランダムな文字列を生成しています。
そして、生成した文字列を呼び元に返却する。というシンプルなメソッドです。
想定されるテスト項目としては、以下が思いついちゃいますよね。
  • 引数に「11」を設定したら、ランダムな11文字が返ってくるよね?
  • 引数に「0」以下の値を設定したら?
  • 62文字から指定引数の分、文字列を取得しているけど、引数に「63」以上を設定したら?
  • そもそも引数が数値以外だったら?

と言うことで、これを検証するコードを記述していきます。

「assertSame」というメソッドで、値が同じか?という判定をしています。
んで、他にも沢山、判定するメソッドがあるのですが、これらの事を「Assert」(アサーション)と言います。
※他のアサーションメソッドについては、以下URLをご参照下さい。(沢山あり過ぎてビビります。)
https://phpunit.readthedocs.io/ja/latest/assertions.html

3.テストの実行

取り合えず、テストの実行をします。
コマンドラインから以下を実行します。

すると以下の様に実施結果が表示されます。

後はこれを各クラスのメソッド分、繰り返してコーディングして実施いく感じです。

でわ



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ