목차
✅ 1. 테스트 환경을 설정하십시오
✅ 2. 기능 테스트 작성 (대부분의 경우 권장)
예 : 사용자가 로그인 할 수 있습니다
주요 도우미 :
✅ 3. 단위 테스트 작성
예 : 사용자 정의 서비스 클래스를 테스트하십시오
✅ 4. 공장 및 데이터베이스 테스트 사용
5. API 엔드 포인트 테스트
✅ 6. 모범 사례
PHP 프레임워크 Laravel Laravel에서 테스트를 작성하는 방법?

Laravel에서 테스트를 작성하는 방법?

Jul 31, 2025 am 06:43 AM
laravel 시험

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

Laravel에서 테스트를 작성하는 방법?

Laravel에서 테스트를 작성하는 것은 PhPunit 및 Laravel 관련 테스트 헬기에 대한 내장 지원 덕분에 간단합니다. Laravel은 기능 테스트 (앱의 일부가 함께 작동하는 방식 테스트)와 단위 테스트 (개별 클래스 또는 기능 테스트)를 모두 권장합니다. 효과적인 테스트를 시작하고 작성하는 방법은 다음과 같습니다.

Laravel에서 테스트를 작성하는 방법?

✅ 1. 테스트 환경을 설정하십시오

Laravel에는 phpunit.xml 파일과 tests 디렉토리가 제공됩니다.

  • 테스트 파일은 tests/Featuretests/Unit 디렉토리에 들어갑니다.
  • 테스트에 SQLITE를 사용하십시오. 빠르고 메모리에서 작동합니다.
  • db 연결을 설정하려면 .env.testing 파일 (존재하지 않으면 작성)을 업데이트하십시오.
 db_connection = sqlite
db_database = : 메모리 :

다음을 사용하여 테스트를 실행합니다.

Laravel에서 테스트를 작성하는 방법?
 PHP 장인 테스트

또는 직접 phpunit과 함께 :

 ./vendor/bin/phpunit

✅ 2. 기능 테스트 작성 (대부분의 경우 권장)

기능 테스트는 전체 HTTP 경로 및 사용자 상호 작용을 확인합니다.

Laravel에서 테스트를 작성하는 방법?

예 : 사용자가 로그인 할 수 있습니다

 // 테스트/기능/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

뜨거운 주제

Laravel의 구성 캐싱이란 무엇입니까? Laravel의 구성 캐싱이란 무엇입니까? Jul 27, 2025 am 03:54 AM

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

Laravel 테스트에서 물체를 조롱하는 방법은 무엇입니까? Laravel 테스트에서 물체를 조롱하는 방법은 무엇입니까? Jul 27, 2025 am 03:13 AM

USEMOCKERYFORCUSTOMDENCENTICESBYSETEXPINTIONSWITHSHOULDRECEIVE ()

Laravel에서 추천 시스템을 구현하는 방법은 무엇입니까? Laravel에서 추천 시스템을 구현하는 방법은 무엇입니까? Aug 02, 2025 am 06:55 AM

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

Laravel 프로젝트를 운영하는 방법? Laravel 프로젝트를 운영하는 방법? Jul 28, 2025 am 04:28 AM

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

Laravel에서 데이터베이스를 시드하는 방법은 무엇입니까? Laravel에서 데이터베이스를 시드하는 방법은 무엇입니까? Jul 28, 2025 am 04:23 AM

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

Laravel로 REST API를 구축하는 방법? Laravel로 REST API를 구축하는 방법? Jul 30, 2025 am 03:41 AM

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

Laravel 앱에서 기능 플래그를 구현하는 방법은 무엇입니까? Laravel 앱에서 기능 플래그를 구현하는 방법은 무엇입니까? Jul 30, 2025 am 01:45 AM

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

Laravel 애플리케이션에서 GraphQL을 구현하는 방법은 무엇입니까? Laravel 애플리케이션에서 GraphQL을 구현하는 방법은 무엇입니까? Jul 27, 2025 am 01:27 AM

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

See all articles