Pest collision laravel zero 의 제작자인 Nuno Maduro 가 만든 test framework 으로 PHPUnit 을 wrapping 해서 편리하고 가독성 있는 테스트를 작성할 수 있게 도와줍니다.

(Nuno 씨는 뛰어난 실력을 갖추고 심지어 친절도 합니다. 개싸가지 Graham Campbell 과는 비교가 되죠.)


설치


먼저 phpunit.xml 이 프로젝트 루트 폴더에 있는지 확인합니다. 없으면 pest github 에서 다운받거나 콘솔에서 다음 명령을 실행합니다.

wget https://raw.githubusercontent.com/pestphp/pest/master/stubs/Laravel/phpunit.xml
BASH


Pest 를 사용하려는 프로젝트의 composer.json 에 다음 설정이 있는지 확인하고 없으면 설정합니다.

"minimum-stability": "dev",
"prefer-stable": true,
CODE



Pest 는 PHPUnit 9.3 이상을 필요로 하므로 의존성을 업데이트합니다.

PHPUnit 업데이트

$ composer require phpunit/phpunit:"^9.3.10" --dev --update-with-dependencies
BASH


기존 프로젝트의 경우 다음과 같이 nikic/php-parser 관련 의존성 에러가 나는 경우가 있습니다.

 Problem 1
    - Installation request for phpunit/phpunit 9.3.10 -> satisfiable by phpunit/phpunit[9.3.10].
    - Conclusion: remove nikic/php-parser v4.4.0
    - Conclusion: don't install nikic/php-parser v4.4.0
CODE

이럴때는 nikic/php-parser 만 업데이트해 주고 다시 phpunit 을 업데이트 합니다.

$ composer update  nikic/php-parser
BASH


Laravel 을 사용할 경우 collision 을 5.0 이상으로 업데이트해야 합니다.

$ composer require nunomaduro/collision:"^5.0" --dev --update-with-dependencies
BASH


이제 pest 를 설치합니다.

$ composer require pestphp/pest --dev
BASH


라라벨을 사용한다면 plugin 을 설치해 줍니다.

$ composer require pestphp/pest-plugin-laravel --dev 
BASH


추가된 artisan command 인 pest:install 을 실행하면 설정 파일들을 생성하고  github 스타를 찍겠냐고 물어봅니다.

$ php artisan pest:install
BASH



이런 훌륭한 제품을 만들고 공개했으니 잠시 짬내서 github star 를 한 번 찍어줍니다.


laravel 이 아닌 다른 프레임워크 사용자는 아래 명령을 실행합니다.

./vendor/bin/pest --init
BASH


이제 vendor 의 pest 를 직접 실행하면 모든 단위 테스트를 실행하고 결과를 표시합니다.

./vendor/bin/pest
BASH



Ref