Laravel 인터페이스를 테스트하는 방법

PHPz
풀어 주다: 2023-04-14 18:07:10
원래의
670명이 탐색했습니다.

Laravel 프레임워크를 사용하여 인터페이스를 작성한 후 프로젝트를 수락할 때 인터페이스 코드의 정확성을 테스트하기 위한 몇 가지 테스트 기술이 필요합니다. 아래에서는 Laravel 인터페이스를 테스트하는 방법을 소개합니다.

테스트 도구

Laravel에서는 인터페이스 테스트를 위해 PHPUnit을 사용할 수 있습니다. PHPUnit은 자동화된 테스트, API 테스트 및 엔드투엔드 테스트를 지원하는 강력한 PHP 단위 테스트 도구입니다. Laravel 5.5 이상에서는 PHPUnit이 프레임워크의 내장 테스트 도구가 되었기 때문에 추가 설치가 필요하지 않습니다.

테스트 케이스 작성

Laravel에서는php artisan make:test명령을 사용하여 테스트 케이스 파일을 생성할 수 있습니다. 이 명령은tests/Feature디렉터리에 테스트 클래스를 생성하고PHPUnitFrameworkTestCase클래스에서 이 클래스를 상속합니다. 테스트 클래스의 각 메소드는 자동으로 테스트 케이스로 실행됩니다. 예:php artisan make:test命令来生成测试用例文件。这个命令将在tests/Feature目录中生成一个测试类,并将这个类继承自PHPUnitFrameworkTestCase类。测试类的每一个方法都将被自动作为一个测试用例运行。例如:

get('/'); $response->assertStatus(200); } }
로그인 후 복사

在这个示例代码中,我们创建了一个testBasicTest的方法,并且使用了$this->get()方法来发送 HTTP GET 请求,然后使用$response->assertStatus()方法来判断响应状态码是否为 200。

发送请求

在 Laravel 中,我们可以使用$this->get()$this->post()$this->put()$this->patch()$this->delete()等方法来发送 HTTP 请求。这些方法将自动执行路由和控制器方法,并返回 HTTP 响应对象。例如,发送一个 GET 请求到/users路由,在测试类中可以这样写:

public function testGetUsers() { $response = $this->get('/users'); $response->assertStatus(200); }
로그인 후 복사

判断响应内容

在 Laravel 中,我们可以使用$response->assertJson()$response->assertStatus()$response->assertSeeText()$response->assertDontSeeText()等方法来对响应内容进行断言。

如果我们要判断响应内容是否包含一段 JSON 字符串,可以使用$response->assertJson()方法,如果我们要判断响应状态码是否为 200,可以使用$response->assertStatus(200)方法。如果我们要判断响应内容是否包含某个文本,可以使用$response->assertSeeText('Hello World')方法。如果我们要判断响应内容是否不包含某个文本,可以使用$response->assertDontSeeText('Hello World')方法。

例如,测试/users路由返回的用户列表应该是一个数组,我们可以这样写:

public function testGetUsers() { $response = $this->get('/users'); $response->assertJson([ 'users' => [], ]); }
로그인 후 복사

模拟认证和授权

在 Laravel 中,我们可以使用 Laravel 自带的Auth::Facade 来模拟认证和授权。例如,我们可以使用Auth::login()方法来模拟登陆一个用户,也可以使用Auth::shouldReceive()方法来模拟验证一个用户是否有某个权限等。

例如,我们要测试是否需要认证访问/dashboard路由,我们可以这样写:

public function testDashboardRequiresAuthentication() { $response = $this->get('/dashboard'); $response->assertRedirect('/login'); }
로그인 후 복사

总结

在 Laravel 中,我们可以使用 PHPUnit 来进行接口测试,使用$this->get()$this->post()$this->put()$this->patch()$this->delete()等方法来发送 HTTP 请求,使用$response->assertJson()$response->assertStatus()$response->assertSeeText()$response->assertDontSeeText()等方法来对响应内容进行断言。也可以使用 Laravel 自带的Auth::rrreee

이 샘플 코드에서는 testBasicTest메서드를 만들고 $this->get()메서드를 사용하여 HTTP GET 요청을 보냈습니다. 그런 다음 $response->assertStatus()메서드를 사용하여 응답 상태 코드가 200인지 확인합니다. 요청 보내기Laravel에서는 $this->get(), $this->post(), $this를 사용할 수 있습니다. ->put(), $this->patch()$this->delete()를 사용하여 HTTP 요청을 보냅니다. 이러한 메서드는 자동으로 경로 및 컨트롤러 메서드를 실행하고 HTTP 응답 개체를 반환합니다. 예를 들어, GET 요청을 /users경로로 보내려면 테스트 클래스에서 다음과 같이 작성할 수 있습니다. rrreee응답 내용 판단Laravel에서는 $response를 사용할 수 있습니다. ->assertJson (), $response->assertStatus(), $response->assertSeeText()$response-> ;assertDontSeeText()및 응답 콘텐츠를 주장하는 기타 메서드입니다. 응답 내용에 JSON 문자열이 포함되어 있는지 확인하려면 $response->assertJson()메서드를 사용하여 응답 상태 코드가 200인지 확인하세요. $response->assertStatus(200)메소드를 사용할 수 있습니다. 응답 내용에 특정 텍스트가 포함되어 있는지 확인하려면 $response->assertSeeText('Hello World')메서드를 사용할 수 있습니다. 응답 내용에 특정 텍스트가 포함되어 있지 않은지 확인하려면 $response->assertDontSeeText('Hello World')메서드를 사용할 수 있습니다. 예를 들어, 테스트 /users라우트에 의해 반환된 사용자 목록은 배열이어야 하며 다음과 같이 작성할 수 있습니다: rrreee인증 및 승인 시뮬레이션Laravel에서는 Laravel 자체의 Auth:: 인증 및 권한 부여를 시뮬레이션하는 Facade입니다. 예를 들어 Auth::login()메서드를 사용하여 사용자 로그인을 시뮬레이션하거나 Auth::shouldReceive()메서드를 사용하여 확인을 시뮬레이션할 수 있습니다. 사용자에게 특정 권한이 있는지 여부 등 예를 들어, /dashboard경로에 액세스하기 위해 인증이 필요한지 테스트하려면 다음과 같이 작성할 수 있습니다. rrreeeSummaryLaravel에서는 인터페이스 테스트를 위해 PHPUnit을 사용할 수 있습니다. , $this->get(), $this->post(), $this->put()을 사용하세요. $this ->patch()$this->delete()및 기타 HTTP 요청 전송 방법을 사용하려면 $response->assertJson( ), $response->assertStatus(), $response->assertSeeText()$response->assertDontSeeText() 등. 응답 내용에 대한 어설션을 만듭니다. 또한 Laravel의 자체Auth::Facade를 사용하여 인증 및 권한 부여를 시뮬레이션할 수도 있습니다.

위 내용은 Laravel 인터페이스를 테스트하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!