문제

나는 PhPunit 주위에 머리를 잡고 기존 수업에 대한 테스트 케이스를 만들려고 노력하고 있습니다.

이 클래스는 응용 프로그램에서 사용할 수있는 정적 구성 클래스, Get, 설정 및 목록 구성 옵션입니다.

수업은 매우 엄격하게 구축되었습니다. 호환되지 않는 값 또는 존재하지 않는 구성 설정으로 구성 설정을 설정하려고하면 a. E_USER_ERROR 스크립트의 실행을 중단하여 던져집니다. 오류 처리의 미세 예술이 아니더라도이 클래스의 목적에 적합합니다. 해당 클래스의 오류는 항상 프로그래밍 오류의 결과이며 사용자 입력이 잘못된 적이 없습니다.

이는 오류 메시지가 처리되거나 기록되는 방법에 대해 걱정할 필요가 없다는 큰 이점이있어 코드를 슬림하게 유지합니다. 메시지를 출력하십시오 (또는 제작 중), 다이 (), 완료.

그러나 단위 테스트를 통해 클래식 PHP 오류로 계속 작업 할 수있는 방법을 알 수 없습니다. 성공 플래그를 반환하거나 예외를 던지기 위해 함수를 변환해야합니다.

제가 맞습니까?

아니면 예외를 예상하기 때문에 PHPUnit에 오류를 기대하는 방법이 있습니까? 나는 곧바로 볼 수 없습니다.

도움이 되었습니까?

해결책

로부터 phpunit 매뉴얼:

기본적으로 PHPUnit은 PHP 오류, 경고 및 테스트 실행 중에 트리거되는 통지를 예외로 변환합니다. 이러한 예외를 사용하면 예를 들어 예제 4.8에 표시된대로 PHP 오류를 트리거하는 테스트가 예상 될 수 있습니다.

class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException PHPUnit_Framework_Error
     */
    public function testFailingInclude()
    {
        include 'not_existing_file.php';
    }
}

물론 예외에 대한 동일한 작품입니다.

편집하다: 이 의견이 이미 언급 된 것을 보지 못했지만 누군가 같은 질문을 찾고 의견을 읽지 않은 경우 참조를 위해 여기에 남겨 두겠습니다.

다른 팁

경고를 예외로 취소하려면 사용하십시오. PHPUnit_Framework_Error_Warning::$enabled=false; .

구현의 세부 사항을 모르지만 테스트 할 수있는 일반 (사용자 정의) 예외 (테스트 할 수 있음)를 높이고 앱에 전역 예외 처리기를 가질 수는 없습니다. 예외?

확인하다 set_exception_handler 이 글로벌 예외 처리기 설정에 대한 자세한 내용은

오류 핸들러를 정의 할 수는 없습니다 ( set_error_handler) PHPUNIT가 처리 할 수없는 오류를 처리합니다 (예 : E_USER_ERROR) 단위 테스트의 실패로?

(에서 영감을 받다 WordPress의 테스트)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top