Various Tests with Laravel

ども、開発チームのカロージです。

Laravel のテストが超絶便利だったので情報共有させて頂きます。

 

はじめに

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

この3つのテストの方法などについて、それぞれ情報共有させて頂きます。

  1. UnitTest
  2. FeatureTest
  3. BrowserTest

環境と前提

まず、私の環境。

  • Windows 10 Pro 64bit
  • Google Chrome ブラウザバージョン: 87.0.4280.141(Official Build) (64 ビット)
  • Laravel 8.x でアプリ開発中
  • MySQL 5.6.x インストール済み
  • その他、以下の諸々のソフトが入ってますが、今回は、Laradockやdockerなど、コンテナを使用していません。


前提として以下は「済」として進めます。

    • Laravel(ver.8系)のインストール
    • プロジェクトディレクトの生成
    • マイグレーション
    • シーダーの実行など

 

UnitTest

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

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

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

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

FeatureTest

機能(Feature)テストは、多くのオブジェクトがそれぞれどのように関しているかとか、

JSONエンドポイントへ完全なHTTPリクエストを送ることさえ含む、コードの幅広い範囲をテストします。

個人的な感覚としては、Controllerクラスに対するテストで、HTTPリクエスト単位の動作テストになります。

つまり、ルーティング単位でテストクラスを作成し、リクエストからレスポンス迄を検証します。

BrowserTest

名前の通り、ブラウザを使用したテストになります。

Laravel Dusk(ダースク:夕暮れ)という、パッケージを使用し、簡単なブラウザの自動操作/テストAPIを実行します。

このテストの実行には、ChromeDriverという、プログラムのインストールが必要になります。

 

 

テストファイルの設置ディレクトリ生成

テストファイルを設置する準備を行います。また、BrowserTestはChromeDriverのDLを実施します。

UnitTest

以下のコマンドにより、UnitTest ファイルを生成します。

※「{MemberTest}」の部分は任意の値にご変更下さい。

 

これにより、プロジェクトディレクトリの直下に tests->Unitt->MemberTest.php が生成されます。
ファイルの中を覗いて見ると以下の様な記述になっています。

FeatureTest

以下のコマンドにより、FeatureTestファイルを生成します。

※「{MemberTest}」の部分は任意の値にご変更下さい。

 

これにより、プロジェクトディレクトリの直下に tests->Feature->MemberTest.php が生成されます。
ファイルの中を覗いて見ると以下の様になっています。

UnitTestもFeatureTestも、TestCaseを拡張しているのが分かります。

 

BrowserTest

以下、ChromeDriverのURLから、ご自身のChromeのバージョンに合ったドライバーをDLします。

https://sites.google.com/a/chromium.org/chromedriver/downloads

 

1.Current Releases からChromeのバージョンに合ったドライバーを選択します

ChromeDriver - WebDriver for Chrome

 

 

2.OSに合ったドライバーを選択します

OS

3.「chromedriver_win32.zip」がダウンロードされるので解凍してインストール

(現状、Windows環境のx64が存在していませんがx32のドライバでも動作します)

 

インストール

 

 

これで、それぞれのテストの準備が整ったので、テストコードを記述していきます。が…

記事が結構、長くなってきたので、各テストについては、それぞれ別記事で記載します。

 

参考



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

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