Contao는 유지 관리가 쉬운 전문 웹사이트를 원하는 사람들을 위한 오픈 소스 PHP 콘텐츠 관리 시스템입니다. 자세한 내용은 프로젝트 웹사이트를 방문하세요.
Contao 테스트 케이스는 Contao 테스트를 위한 몇 가지 유용한 방법이 포함된 PHPUnit 테스트 케이스를 제공합니다. php composer.phar require --dev contao/test-case
실행하여 패키지를 설치한 다음 테스트 클래스에서 사용합니다.
use Contao TestCase ContaoTestCase ;
class MyTest extends ContaoTestCase
{
}
getContainerWithContaoConfiguration()
메소드는 Contao 핵심 확장의 기본 구성을 사용하여 Symfony 컨테이너를 모의합니다.
$ container = $ this -> getContainerWithContaoConfiguration ();
echo $ container -> getParameter ( ' contao.upload_path ' ); // will output "files"
프로젝트 디렉터리를 설정할 수도 있습니다.
$ container = $ this -> getContainerWithContaoConfiguration ( ' /tmp ' );
echo $ container -> getParameter ( ' kernel.project_dir ' ); // will output "/tmp"
echo $ container -> getParameter ( ' kernel.root_dir ' ); // will output "/tmp/app"
echo $ container -> getParameter ( ' kernel.cache_dir ' ); // will output "/tmp/var/cache"
mockContaoFramework)
메서드는 초기화된 Contao 프레임워크를 모의합니다.
$ framework = $ this -> mockContaoFramework ();
$ framework
-> expect ( $ this -> atLeastOnce ())
-> method ( ' initialize ' )
;
이 메서드는 Contao 설정을 사용하여 구성 어댑터를 자동으로 추가합니다.
$ framework = $ this -> mockContaoFramework ();
$ config = $ framework -> getAdapter ( Contao Config::class);
echo $ config -> get ( ' datimFormat ' ); // will output "'Y-m-d H:i'"
선택적으로 더 많은 어댑터를 인수로 추가할 수 있습니다.
$ adapters = [
Contao Config::class => $ configAdapter ,
Contao Encryption::class => $ encryptionAdapter ,
];
$ framework = $ this -> mockContaoFramework ( $ adapters );
지정된 구성 어댑터는 기본 구성 어댑터를 덮어씁니다.
mockAdapter()
메소드는 주어진 메소드로 어댑터를 모의합니다.
$ adapter = $ this -> mockAdapter ([ ' findById ' ]);
$ adapter
-> method ( ' findById ' )
-> willReturn ( $ model )
;
$ framework = $ this -> mockContaoFramework ([ Contao FilesModel::class => $ adapter ]);
위와 같이 간단한 반환 값을 갖는 어댑터는 더욱 단순화될 수 있습니다.
$ adapter = $ this -> mockConfiguredAdapter ([ ' findById ' => $ model ]);
이 코드는 위의 코드와 정확히 동일합니다.
mockClassWithProperties()
메서드는 속성을 관리하기 위해 마법의 __set()
및 __get()
메서드를 사용하는 클래스를 모의합니다.
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class);
$ mock -> id = 2 ;
$ mock -> title = ' Home ' ;
echo $ mock -> title ; // will output "Home"
조롱할 클래스가 읽기 전용인 경우 선택적으로 속성을 생성자 인수로 전달할 수 있습니다.
$ properties = [
' id ' => 2 ,
' title ' => ' Home ' ,
];
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class, $ properties );
echo $ mock -> title ; // will output "Home"
원래 클래스의 메서드를 호출해야 하는 경우 메서드 이름을 세 번째 인수로 전달할 수 있습니다. 결과로 나오는 모의 객체는 주어진 메서드가 없는 부분적인 모의 객체가 됩니다.
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class, [], [ ' getTable ' ]);
$ mock -> id = 2 ;
echo $ mock -> getTable (); // will call the original method
mockTokenStorage()
Contao 백엔드 또는 프런트엔드 사용자를 반환하는 토큰으로 토큰 저장소를 모의합니다.
$ tokenStorage = $ this -> mockTokenStorage ( Contao BackendUser::class);
$ user = $ tokenStorage -> getToken ()-> getUser ();
getTempDir()
메소드는 테스트 클래스 이름을 기반으로 임시 디렉토리를 생성하고 해당 경로를 반환합니다.
$ fs = new Filesystem ();
$ fs -> mkdir ( $ this -> getTempDir (). ' /var/cache ' );
테스트가 실행된 후 디렉터리가 자동으로 제거됩니다. 이것이 작동하려면 테스트 클래스에서 메서드를 정의하는 경우 항상 상위 tearDownAfterClass()
메서드를 호출해야 합니다!
use Contao TestCase ContaoTestCase ;
class MyTest extends ContaoTestCase
{
public static function tearDownAfterClass ()
{
// The temporary directory would not be removed without this call!
parent :: tearDownAfterClass ();
}
}