유저 로그인에 대해 TDD를 진행했다.
진행하면서 떳던 에러사항에 대해서는 진행하지 않습니다.
cp .env .env.testing 명령어 사용해서 .testing 파일 생성
./vendor/bin/sail artisan key:generate --env=testing
명령어 사용해서 APP_KEY 값 설정
./vendor/bin/sail artisan migrate --env=testing 으로 migrate 진행
.env.testing 파일
DB_DATABASE=testing # 테스트용 데이터베이스 이름
다른 부분을 제외하고 만 따로 지정해주면 된다.
php artisan make:test LoginUserTest
으로 테스트할 php 파일 만들어주고
<?php
namespace Tests\Feature;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class LoginUserTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function user_can_login_with_valid_credentials()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$response = $this->post('/login', [
'email' => 'test@example.com',
'password' => 'password',
]);
$response->assertStatus(302); // 로그인 성공 시 리다이렉트 발생
$response->assertRedirect('/dashboard'); // 대시보드로 리다이렉트하는지 확인
$this->assertAuthenticatedAs($user);
}
public function user_cannot_login_with_invalid_credentials()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$response = $this->post('/login', [
'email' => 'test@example.com',
'password' => 'wrong-password',
]);
$response->assertStatus(302); // 잘못된 로그인 시에도 리다이렉트 발생
$response->assertSessionHasErrors('email'); // 오류 메시지가 세션에 저장되는지 확인
$this->assertGuest(); // 여전히 인증되지 않은 상태여야 함
}
}
이런 식으로 테스트 코드 짜주면 된다.
./vendor/bin/sail test --filter LoginUserTest
이후 명령어 실행해주면 최초 이미지 처럼 TDD 성공이라고 뜬다
실패일 경우
TDD 를 진행하기전 로그인 기능은 구현되어 있는 상태여야 한다.
'취미 > 프로그래밍' 카테고리의 다른 글
Android Studio 패키지명 변경하기(톱니바퀴 없을 경우) (1) | 2024.11.13 |
---|---|
Mysql User 더미데이터 넣는 프로시저 (3) | 2024.09.29 |
Laravel 이메일 인증코드 구현 (1) | 2024.09.10 |
Laravel 이메일 인증 연동 구현하기 (0) | 2024.09.08 |
WSL2 와 Docker를 이용한 Laravel 개발환경 구축하기 (0) | 2023.04.30 |