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コマンドを入れるとテスト中でもコンソールに出力される。