티스토리 뷰

반응형

Laravel 11에서 테스트 코드는 PHP의 PHPUnit을 기반으로 작성되며, Laravel의 TestCase 클래스를 상속하여 기능 테스트, 유닛 테스트, HTTP 테스트 등을 수행할 수 있습니다. Laravel 11에서도 이전 버전과 큰 차이는 없다.


✅ 1. HTTP Feature 테스트 예제 (tests/Feature/UserTest.php)

<?php

namespace Tests\Feature;

use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;

class UserTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    public function it_shows_user_profile_page()
    {
        $user = User::factory()->create();

        $response = $this->actingAs($user)->get("/users/{$user->id}");

        $response->assertStatus(200);
        $response->assertSee($user->name);
    }
}

✅ 2. 유닛 테스트 예제 (tests/Unit/CalculatorTest.php)

<?php

namespace Tests\Unit;

use Tests\TestCase;

class CalculatorTest extends TestCase
{
    /** @test */
    public function it_adds_numbers_correctly()
    {
        $sum = 2 + 3;

        $this->assertEquals(5, $sum);
    }
}

✅ 3. API 테스트 예제 (tests/Feature/Api/UserApiTest.php)

<?php

namespace Tests\Feature\Api;

use Tests\TestCase;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;

class UserApiTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    public function it_returns_user_data_as_json()
    {
        $user = User::factory()->create();

        $response = $this->actingAs($user)->getJson("/api/users/{$user->id}");

        $response->assertStatus(200)
                 ->assertJson([
                     'id' => $user->id,
                     'name' => $user->name,
                     'email' => $user->email,
                 ]);
    }
}

✅ 테스트 실행 명령어

터미널에서 다음 명령어로 테스트를 실행할 수 있습니다.

php artisan test

 

또는 PHPUnit을 직접 실행:

./vendor/bin/phpunit

Laravel 11은 Pest를 기본으로 지원하지 않지만, 원한다면 pestphp/pest 패키지를 설치해 더 간결한 문법으로 테스트할 수도 있습니다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함