laravelでテストを作成する。

php/laravel


laravelの公式
https://readouble.com/laravel/8.x/ja/testing.html

テストの種類

laravelで行うテストの種類ですが

  • UnitTest
  • FeatureTest
  • BrowserTest

があります。

unitTestは1class1testをする。一番粒度が細かいテストになります。

FeatureTestは1ルーティングに対して、1テストを作成する方法です。
APIの場合1API単位に1testをする事になります。

BrowserTestは実際ブラウザを使ってリクエストする方法になります。

FeatureTestの実装方法

テストを作成します

php artisan make:test ○○○ControllerTest

上記コマンドでtests\Feature\配下にファイルが作成されます。

テストの実装

登録のテスト

    /**
     * A basic feature test example.
     *
     * @return void
     */
    public function testCreateUser()
    {
        $formData = [
            'name' => 'ユーザーネーム',
            'email' => 'test@test.com',
        ];

        $response = $this->post('api/create-user', $formData);
        $response->assertStatus(200);
    }

ここで $response に対してassert○○でチェックがかけられます。
下記のように書くとStatusが200で返ってきたかのチェックがかけられます。
色んなassertがあるので調べてみてください。
$response->assertStatus(200);

テストの実行

全部実行するのは下記

php artisan test

単体の実行は下記

php artisan test tests/Feature/○○○ControllerTest.php

画像をアップロードするテスト

laravelで画像をアップロードするテストを実装します。
fakerで画像を作成する必要がある様なのですが、composerでGDを入れたり、dokcer環境に色々入れないといけない様子。

参考下記

https://qiita.com/Soh1121/items/17dcdc815a1d22f31788

環境構築からなのでちょっと大変。

APIのテストでエラー(500)が返ってきた場合

デフォルトではstorage\logsの配下にエラーが出力されるので確認。
またコード中にddコマンドを入れるとテスト中でもコンソールに出力される。