A Laravel テスト - user000422/0 GitHub Wiki

PHP Unit

最初から導入済み。

パス 説明
projext/phpunit.xml PHPUnit設定ファイル。
projext/tests/Feature PHPUnit実行フォルダ。リクエスト単位のテスト。
projext/tests/Unit PHPUnit実行フォルダ。メソッド単位のテスト。

■実行

# ファイル個別に実行
php artisan test tests/Feature/SampleTest.php

# すべて実行
php artisan test

■テストクラス作成 テストケースのクラス名は末尾が「Test」であること。

# テストクラスの作成(Feature配下)
php artisan make:test SampleTest

# テストクラスの作成(Unit配下)
php artisan make:test SampleTest --unit

setup

/**
 * setup
 */
protected function setUp(): void
{
    parent::setUp(); // これが必須
}

テストクラス

■テストクラス ここではアノテーションに「@test」の設定前提で進める。 アノテーションに「@test」を設定することでメソッド名の先頭に「test」を付ける必要がなくなる。

/*
 * @test
 */
public funtion example() {
    // 結果判定(真偽値)
    $this->assertTrue(true);

    // 結果判定(一致)
    $this->assertEquals($str1, $str2);
}

■APIテスト

/*
 * @test
 */
public funtion example() {
    // GET
    $response = $this->getJson('/api/users');

    // テスト HTTPステータスコード
    $response->assertStatus(200);
}

■アクセストークンが必要な場合のテスト

/*
 * @test
 */
public funtion example() {
        $response = $this->postJson('/api/login', [
            'email' => '[email protected]',
            'password' => 'password',
        ]);
        $this->accessToken = $response->json('access_token');
}