💻

【PHPUnit】複数パターンの同一テストの一元化(@dataProvider)

に公開

複数パターンのテスト

TestCase.php

tests/TestCase.php

<?php

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
}

対象テスト

    /**
     * @dataProvider 使用するメソッド
     */
    public function test複数パターンテスト($テストで使用する値1, $テストで使用する値2)
    {
        // テストコードを記載
        $this->assertEquals($期待値1, $テストで使用する値1, "test failed 1");
        $this->assertEquals($期待値2, $テストで使用する値2, "test failed 2");
    }

    public function 使用するメソッド() : array
    {
        return [
            'test1' => [1, 2],
            'test2' => [2, 3],
            'test3' => [3, 4],
        ];
        // 上記配列のキーは任意
        // テストケースを分かりやすくするためにつけることは推奨
    }

上記のようにドキュメントコメントに、
dataProviderアノテーションを付与し、
その次に使用したい配列のメソッドを指定する。

すると、指定した配列のメソッドの値が、テストケースの引数に左から順に入り、
その値でテストを回すことができる。

上記例では、1度目のテストで、
$テストで使用する値1 に 1
$テストで使用する値2 に 2
が入る。

関連記事

Unitテスト作成コマンド

https://zenn.dev/tkmttkm/articles/04cd281b72bc17

Discussion