/
PHPUnit 에서 예외 테스트(Exception Test) 하기
PHPUnit 에서 예외 테스트(Exception Test) 하기
단위 테스트 작성시 특정 Exception 이 발생해야 하는 경우가 있습니다.
예로 입력값이 유효한 전화 번호인지 검증하는 validator 를 만들었다면 유효하지 않은 입력값일 경우 테스트 코드는 \Illuminate\Validation\ValidationException 예외가 발생하지 않으면 단위테스트가 실패한 것으로 처리해야 합니다.
이런 예외를 테스트하기 위해 PHPUnit 은 2가지 방법을 제공합니다.
@expectedException 사용
예전 버전의 PHPUnit 은 이를 위해 다음과 같이 @expectedException 을 테스트 함수의 PHPDoc 에 기술해 주면 됐지만 deprecated 됐고 PHPUnit 9 에서는 제거될 예정입니다.
<?php class ValidationTest extends TestCase { /** * @test * @expectedException \Illuminate\Validation\ValidationException */ public function thrown_validation_exception_when_input_invalid_phone_number() { $invalid_phone_number = [ 'invalid_phone_number' => '987654321', ]; $validator = Validator::make($invalid_phone_number, [ 'invalid_phone_number' => [ 'required', 'max:15', new CellPhoneRule(), ], ]); $validator->validate(); $this->assertTrue(true); }
expectException method 사용
최신 버전의 PHPUnit 은 expectException(string $exception) 메서드 사용을 권장하고 있습니다. 테스트 코드 시작점에 호출해 주고 테스트 코드를 아래에 기술해 주면 됩니다.
<?php class ValidationTest extends TestCase { /** * @test */ public function thrown_validation_exception_when_input_invalid_phone_number() { // 발생할 Exception 설정 $this->expectException(\Illuminate\Validation\ValidationException::class); $invalid_phone_number = [ 'invalid_phone_number' => '987654321', ];
Ref
, multiple selections available,
Related content
PHPUnit test case dependency
PHPUnit test case dependency
More like this
laravel test 하기
laravel test 하기
More like this
phpunit 단위 테스트 건너뛰기(skipping tests)
phpunit 단위 테스트 건너뛰기(skipping tests)
More like this
phpunit Fixtures
phpunit Fixtures
More like this
phpunit 설치 및 php 단위 테스트 하기
phpunit 설치 및 php 단위 테스트 하기
More like this
PHP_CodeSniffer 로 PHP Source 코드 표준 준수 여부 검사하기
PHP_CodeSniffer 로 PHP Source 코드 표준 준수 여부 검사하기
More like this