์šฐ์•„ํ•œ PHP Test Framework Pest - #1 ์„ค์น˜ํ•˜๊ธฐ


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


Pest ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํ”„๋กœ์ ํŠธ์˜ composer.json ์— ๋‹ค์Œ ์„ค์ •์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์—†์œผ๋ฉด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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



Pest ๋Š” PHPUnit 9.3 ์ด์ƒ์„ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ ์˜์กด์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

PHPUnit ์—…๋ฐ์ดํŠธ
$ composer require phpunit/phpunit:"^9.3.10" --dev --update-with-dependencies


๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 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

์ด๋Ÿด๋•Œ๋Š”ย nikic/php-parser ๋งŒ ์—…๋ฐ์ดํŠธํ•ด ์ฃผ๊ณ  ๋‹ค์‹œ phpunit ์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

$ composer update ย nikic/php-parser


Laravel ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐย collisionย ์„ 5.0 ์ด์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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


์ด์ œ pest ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ composer require pestphp/pest --dev


๋ผ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด plugin ์„ ์„ค์น˜ํ•ด ์ค๋‹ˆ๋‹ค.

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


์ถ”๊ฐ€๋œ artisan command ์ธย pest:install ์„ ์‹คํ–‰ํ•˜๋ฉด ์„ค์ • ํŒŒ์ผ๋“ค์„ ์ƒ์„ฑํ•˜๊ณ ย  github ์Šคํƒ€๋ฅผ ์ฐ๊ฒ ๋ƒ๊ณ  ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.

$ php artisan pest:install



์ด๋Ÿฐ ํ›Œ๋ฅญํ•œ ์ œํ’ˆ์„ ๋งŒ๋“ค๊ณ  ๊ณต๊ฐœํ–ˆ์œผ๋‹ˆ ์ž ์‹œ ์งฌ๋‚ด์„œ github star ๋ฅผ ํ•œ ๋ฒˆ ์ฐ์–ด์ค๋‹ˆ๋‹ค.


laravel ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ์ž๋Š” ์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

./vendor/bin/pest --init


์ด์ œ vendor ์˜ pest ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

./vendor/bin/pest



Ref