티스토리 뷰
728x90
라라벨에서 테스트 클래스를 생성하면 TestCase 추상 클래스를 상속받은 클래스가 생성됩니다.
Feature Test냐 UnitTest냐에 따라 이 클래스의 출처(?)가 달라집니다.
단위 테스트 Unit Test
- 가장 작은 단위의 코드 (ex.메소드, 함수)에 대한 테스트
- 타겟코드가 의도대로 정확히 동작하는지 검증
- 서비스 컨테이너가 동작하지 않음
// UserTest클래스를 Unit 패키지 안에 생성
php artisan make:test UserTest --unit
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase
{
단위 테스트에서는 TestCase는 PHPUnit\Framework의 TestCase를 상속받아 사용합니다.
PHPUnit의 TestCase에서는 서비스 컨테이너가 동작하지 않기 때문에 Config와 같은 Facade나 DAO 등 외부 인스턴스를 사용할 수 없습니다.
(사용하기 위해서는 테스트 더블로 만들어야 합니다. 라라벨 진영에서는 Mockery를 가장 많이 사용합니다)
기능 테스트 Feature Test
- 종단간 테스트 (End to End Test)
- ex) API의 엔드포인트를 HTTP를 통해 request를 보내고 response 받기
- API Request는 controller, model, dao 등 모든 레이어를 통과
- 단위 테스트와는 달리 개발자가 변경할 수 없는 부분 (ex. 외부 라이브러리, 데이터베이스)까지 묶어서 검증
// UserTest클래스를 Feature 패키지 안에 생성
php artisan make:test UserTest
namespace Tests\Feature;
use Tests\TestCase;
class UserTest extends TestCase
단위 테스트와는 다르게 Tests의 TestCase를 상속받아 사용합니다.
JUnit의 @SpringBootTest와 유사하다고 보면 됩니다.
728x90
'Laravel' 카테고리의 다른 글
Predis를 이용하여 Laravel에서 Redis 사용하기 (0) | 2022.11.03 |
---|---|
[Laravel/PHPUnit] beforeEach 역할의 setUp() (0) | 2022.10.31 |
[Laravel/PHPUnit] 단위 테스트 시 A facade root has not been set 문제 해결하기 - Mockery (0) | 2022.10.26 |
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mockery
- 도커
- NoSQL
- 샤딩
- pods
- springboot
- 리눅스 컨테이너
- 분산처리
- laravel 테스트
- kubernetes
- 대규모 데이터 처리
- 라라벨
- Apache POI
- database
- php
- mongoDB
- laravel
- laravel 테스트코드
- 주니어개발자
- 백엔드
- docker
- k8s
- 몽고디비
- MySQL
- index
- 쿠버네티스
- 샤드
- java
- redis
- phpUnit
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함