0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】Laravel10でのPHPUnitの使い方

Posted at

エンジニアとして働きながら個人でLaravel10を触っています。記事を読みながら実装を進めていくとPHPUnitに関する記事がまとまっていない状態でした。そのため備忘録としてQiitaにまとめてみました。

環境

Windows10
ubuntu(wsl) 22.04.4 LTS
Laravel 10.48.12
PHP 8.3.7
DB sqlite3

PHPUnit とは

PHPUnitとはPHP言語の単体テストを行うためのフレームワークです。
変更した箇所で要件を満たしていて、既存の機能に影響がないかを自動で確認することができます。

PHPUnitのメリット・デメリット

メリット

  • モジュールが結合される前にテストができるため、問題の原因特定が容易
  • コードの作成と並行してテストコードを書くため、コード理解が深まる
  • PHPUnitを使うことで自動化できる
    →コマンドのみで動作確認が可能

デメリット

  • 開発者の開発負担が高くなる

UnitとFeature

testsディレクトリ配下にはUnitとFeatureがあります。

使い分けについての説明
Feature 1つのHTTPリクエストの動作テスト
Unit 1つ1つのメソッドなどの動作検証

UnitとFeatureの使い分け

Feature: Controller
Unit: Model、Service、Repository

上記の使い分けがスタンダードな分け方になるかと思います。

作成方法

新しいテストケースを作成するには、make:testコマンドを使用します。デフォルトでは、テストはtests/Featureディレクトリへ配置されます。

php artisan make:test SampleTest

tests/Unitディレクトリ内にテストを作成したい場合は、make:testコマンドを実行するときに--unitオプションを使用します。

php artisan make:test SampleTest --unit

上記のコマンドを実行すると以下のようなPHPファイルが生成されます。

tests/Feature/SampleTest.php
namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class SampleTest extends TestCase
{
    /**
     * A basic feature test example.
     */
    public function test_example(): void
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}
tests/Unit/SampleTest.php
namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class SampleTest extends TestCase
{
    /**
     * A basic unit test example.
     */
    public function test_example(): void
    {
        $this->assertTrue(true);
    }
}

上記の内容を適宜修正すれば操作可能です。

おわりに

Laravelは多くの機能が入っています(MVC、bladeなど)。これらを使ってはじめてLaravelの美味しさを味わえるのだと思います。その足掛かりとしてPHPUnitを勉強していただけたらと思います。

参考記事

LaravelでPHPUnitを使ってテストする手法
LaravelビギナーのためのPHPUnitを利用したユニットテスト入門
LaravelでPHPUnitで自動テストを行う
【Laravel】PHPUnitでControllerの自動テストを実装する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?