Laravel에서 테스트를 작성하는 방법?
Laravel의 내장 phpunit.xml 및 .env.testing을 사용하여 메모리를 사용하여 테스트 환경을 설정하십시오. 2. $ this-> post () 및 AsserTredirect ()와 같은 도우미를 사용하여 전체 HTTP 상호 작용을 테스트하기위한 기능 테스트를 작성하십시오. 3. 서비스와 같은 고립 된 클래스에 대한 단위 테스트를 작성하여 빠르고 필요하지 않은 경우 데이터베이스에 의존하지 않도록하십시오. 4. Laravel 공장 및 새로 고침 데이터베이스 특성을 사용하여 테스트 데이터를 생성하고 관리합니다. 5. JSON () 메소드로 API 엔드 포인트를 테스트하고 필요한 경우 인증을 위해 성소를 사용하여 JSON 응답을 주장합니다. 6. 명확한 테스트 이름, 테스트 당 하나의 주장과 같은 모범 사례를 따르고 클리너 구문에 해충 PHP를 사용하는 것을 고려하십시오. 기능 테스트부터 시작하여 Laravel의 테스트 도구를 활용하면 응용 프로그램 안정성이 크게 향상됩니다.
Laravel에서 테스트를 작성하는 것은 PhPunit 및 Laravel 관련 테스트 헬기에 대한 내장 지원 덕분에 간단합니다. Laravel은 기능 테스트 (앱의 일부가 함께 작동하는 방식 테스트)와 단위 테스트 (개별 클래스 또는 기능 테스트)를 모두 권장합니다. 효과적인 테스트를 시작하고 작성하는 방법은 다음과 같습니다.

✅ 1. 테스트 환경을 설정하십시오
Laravel에는 phpunit.xml
파일과 tests
디렉토리가 제공됩니다.
- 테스트 파일은
tests/Feature
및tests/Unit
디렉토리에 들어갑니다. - 테스트에 SQLITE를 사용하십시오. 빠르고 메모리에서 작동합니다.
- db 연결을 설정하려면
.env.testing
파일 (존재하지 않으면 작성)을 업데이트하십시오.
db_connection = sqlite db_database = : 메모리 :
다음을 사용하여 테스트를 실행합니다.

PHP 장인 테스트
또는 직접 phpunit과 함께 :
./vendor/bin/phpunit
✅ 2. 기능 테스트 작성 (대부분의 경우 권장)
기능 테스트는 전체 HTTP 경로 및 사용자 상호 작용을 확인합니다.

예 : 사용자가 로그인 할 수 있습니다
// 테스트/기능/logintest.php Illuminate \ Foundation \ Testing \ RefreshDatabase를 사용하십시오. 테스트 \ 테스트 케이스 사용; 클래스 logintest는 테스트 케이스를 확장합니다 { RefreshDatabase를 사용하십시오. 공개 기능 test_user_can_login_with_correct_credentials () { $ user = \ app \ models \ user :: factory ()-> 만들기 ([ '이메일'=> 'test@example.com', '비밀번호'=> bcrypt ( 'password'), ]); $ response = $ this-> post ( '/login', [ '이메일'=> 'test@example.com', '암호'=> '비밀번호', ]); $ Response-> AsserTredirect ( '/Dashboard'); $ this-> assertauthenticatedas ($ user); } 공개 기능 test_user_cannot_login_with_invalid_password () { $ user = \ app \ models \ user :: factory ()-> 만들기 ([ '이메일'=> 'test@example.com', '비밀번호'=> bcrypt ( 'password'), ]); $ response = $ this-> post ( '/login', [ '이메일'=> 'test@example.com', '비밀번호'=> '잘못된 통과 단어', ]); $ response-> AssertsessionHaserRors ( '이메일'); $ this-> assertGuest (); // 사용자가 로그인되지 않았습니다 } }
주요 도우미 :
-
$this->get('/url')
,$this->post('/url', $data)
-
assertStatus(200)
,assertRedirect()
,assertSee()
- 양식 검증을위한
assertValid()
/assertInvalid()
-
assertDatabaseHas('users', ['email' => '...'])
✅ 3. 단위 테스트 작성
단위 테스트는 작업, 서비스 또는 도우미와 같은 단일 클래스에 중점을 둡니다.
예 : 사용자 정의 서비스 클래스를 테스트하십시오
// app/services/Orderservice.php 클래스 Orderservice { 공개 기능 getTotal ($ 항목) { return collect ($ items)-> sum (fn ($ item) => $ item [ 'price'] * $ item [ '수량']); } } // tests/init/orderservicetest.php App \ Services \ Orderservice를 사용합니다. 테스트 \ 테스트 케이스 사용; Class Orderservicetest는 테스트 케이스를 확장합니다 { 공개 기능 test_calculates_total_correctly () { $ service = new Orderservice (); $ items = [ [ 'price'=> 10, '수량'=> 2], [ 'price'=> 5, '수량'=> 4], ]; $ total = $ service-> getTotal ($ affert); $ this-> AsserTequals (40, $ 총); } }
⚠️ 참고 : 단위 테스트는 필요하지 않은 경우
RefreshDatabase
사용 하지 않습니다 . 그들은 빠르고 고립되어야합니다.
✅ 4. 공장 및 데이터베이스 테스트 사용
Laravel 공장은 시드 테스트 데이터를 돕습니다.
App \ Models \ User를 사용합니다. Illuminate \ Foundation \ Testing \ RefreshDatabase를 사용하십시오. 공개 기능 test_user_can_view_their_profile () { $ user = user :: factory ()-> create (); $ response = $ this-> actingas ($ user)-> get ( '/profile'); $ 응답-> AssertStatus (200); $ response-> assertsee ($ user-> name); }
RefreshDatabase
사용하여 각 테스트 후 DB를 재설정하십시오 (테스트 스위트 당 마이그레이션은 마이그레이션이 실행).
5. API 엔드 포인트 테스트
JSON API의 경우 json()
사용하여 JSON 응답을 주장하십시오.
공개 기능 test_api_returns_user_data () { $ user = user :: factory ()-> create (); $ response = $ this-> actingas ($ user, 'api') -> JSON ( 'get', '/api/user'); $ 응답-> AssertStatus (200) -> assertjson ([ 'id'=> $ user-> id]); }
또는 Laravel Sanctum을 사용하는 경우 :
Laravel \ Sanctum \ Sanctum을 사용하십시오. 공개 기능 test_protected_api_route () { $ user = user :: factory ()-> create (); Sanctum :: Actingas ($ user); $ this-> get ( '/api/dashboard')-> assertok (); }
✅ 6. 모범 사례
- 클리너 상태에 대한
DatabaseMigrations
또는DatabaseTransactions
대신RefreshDatabase
사용하십시오. - 이름 테스트를 명확하게 테스트하십시오 :
it_returns_403_for_unauthorized_users
대신testSomething()
. - 테스트 방법 당 한 가지를 테스트하십시오.
- 해충 PHP 사용 (선택 사항) : Laravel은 이제 해충을 지원합니다 -보다 우아한 구문 :
// PESTPHP 스타일 it ( '환영 페이지가 있습니다', function () { $ this-> get ( '/')-> assertstatus (200); });
기본적으로 경로에 대한 기능 테스트부터 시작하고 공장을 사용하며 Laravel의 도우미에 의존하십시오. 복잡하지는 않지만 장기 앱 안정성에 큰 차이를 만듭니다.
위 내용은 Laravel에서 테스트를 작성하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel의 구성 캐시는 모든 구성 파일을 단일 캐시 파일로 병합하여 성능을 향상시킵니다. 생산 환경에서 구성 캐시를 활성화하면 각 요청에서 I/O 운영 및 파일 구문 분석이 줄어들어 구성로드 속도를 높일 수 있습니다. 1. 응용 프로그램을 배포 할 때 활성화되어야하며 구성이 안정적이며 자주 변경되지 않아야합니다. 2. 활성화 후 구성을 수정 한 후 PhPartisAnconfig를 다시 실행해야합니다. 3. 구성 파일의 런타임 조건에 의존하는 동적 로직 또는 클로저를 사용하지 마십시오. 4. 문제 해결 문제가 발생하면 먼저 캐시를 지우고 .env 변수를 확인하고 다시 캐시해야합니다.

USEMOCKERYFORCUSTOMDENCENTICESBYSETEXPINTIONSWITHSHOULDRECEIVE ()

추천, 추천, 추천 코드 및 사용 시간을 포함하여 추천 관계를 기록 할 추천 테이블을 작성합니다. 2. 추천 데이터를 관리하기 위해 사용자 모델의 SONGSTOMONY 및 HASMANY 관계 정의; 3. 등록 할 때 고유 한 권장 코드를 생성합니다 (모델 이벤트를 통해 구현할 수 있음). 4. 등록 중 매개 변수를 쿼리하여 권장 코드를 캡처하고 확인 후 권장 관계를 설정하고 자체 권장을 방지합니다. 5. 권장 사용자가 지정된 동작 (구독 순서)을 완료하면 보상 메커니즘을 트리거합니다. 6. 공유 가능한 추천 링크를 생성하고 Laravel Signature URL을 사용하여 보안을 향상시킵니다. 7. 총 권장 사항 수 및 변환 숫자와 같은 대시 보드에 권장 통계를 표시합니다. 데이터베이스 제약, 세션 또는 쿠키가 지속되도록해야합니다.

Checkphp> = 8.1, Composer, andwebserver; 2. CloneorcreateProjectandruncomposerInstall; 3.copy.env.exampleto.envandrunphpartisankey : 생성; 4. 4. SetDatabasecredentitySin.envandRunphPartisanMigrate-Seed; 5.StartServerWithPhPartisAnserve; 6.OptionalLyRunnpmins

시드기 파일 생성 : Phpartisanmake : SeederUserseeder를 사용하여 시드기 클래스를 생성하고 실행 메소드에서 모델 팩토리 또는 데이터베이스 쿼리를 통해 데이터를 삽입하십시오. 2. DatabaseSeeder의 다른 시드러에게 전화하십시오 : REGISTERESEEDER, POSTSEEDER 등 $ this-> Call ()을 통해 종속성이 올바른지 확인하십시오. 3. 시드러 실행 : phpartisandb를 실행하십시오 : 씨앗을 모두 등록 된 시드기를 실행하거나 phpartisangymigrate를 사용하십시오 : 신선한-데이터를 재설정하고 리필하십시오. 4

새로운 Laravel 프로젝트를 만들고 서비스를 시작하십시오. 2. 모델, 마이그레이션 및 컨트롤러를 생성하고 마이그레이션을 실행하십시오. 3. Routes/API.php에서 RESTFUL 경로를 정의합니다. 4. PostController에서 추가, 삭제, 수정 및 쿼리 메소드를 구현하고 JSON 응답을 반환합니다. 5. Postman 또는 Curl을 사용하여 API 기능을 테스트하십시오. 6. 선택적으로 성소를 통해 API 인증을 추가합니다. 마지막으로 실제 적용에 적합한 명확한 구조, 완전하고 확장 가능한 Laravelrestapi를 얻습니다.

chooseafeatureflagsTrategysuchasconfig 기반, 데이터베이스-구동, Orthird-PartyTools Likeflagsmith.2.setupadatabase-drivensystembycreatingAmigrationforAfeature_flagstablewithName, enabled, andrulesfields, thenruntheMigration.3.createfeatureffillew withfilla

installLighThouseViacomposerUsingComposerRequirenuwave/lighthouse.2.publishConfigurationAndSchemafileSwithPhPartisAnvendor : publish--provider = "nuwave \ lighthouse \ lighthouserviceprovider"
