WordPress의 자체 제작 플러그인으로 단위 테스트 사용

13391 단어 PHPUnitWordPress

소개



유닛 테스트 좋네요.
플러그인 등의 로직은 테스트를 만들어 두면 변경이 되겠네요.

유닛 테스트 주위는 그다지 자랑스럽지 않고, 과거에 몇번이나 시험하고 있었습니다만 로컬의 테스트 환경 구축에 실패하는 것이 몇번인가 있었으므로, 그 주변에 대해 정리할 수 있습니다.

환경은 Mac OS X 자체에 구축됩니다.

큰 프레임



WP-CLI+PHPUnit을 사용한 WordPress 플러그인의 유닛 테스트(2)
htps : / / 후레고 by. jp/아 r ゔぇ s/5511

매우 도움이됩니다. 고맙습니다.

PHPUnit 설치


$ brew install phpunit

아래와 같이 버전을 볼 수 있으면 설치 성공입니다.
$ phpunit --version
PHPUnit 5.2.10 by Sebastian Bergmann and contributors.

이전에 home brew로부터 인스톨하려고 했습니다만, 3계 밖에 들어가지 않아 손질한 기억이 있습니다.
아래의 명령으로도 설치 가능합니다.
$ curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar
$ chmod +x phpunit.phar
$ mv phpunit.phar /usr/local/bin/phpunit

h tp : / / s tac ゔ ぇ rf ぉ w. 코 m / 쿠에 s Chion s / 3301300 / Setchin g-u pph Puni t-on-o sx

덧붙여서 공식에서는 PHPUnit는 4.8.x계 밖에 서포트하고 있다, 라는 것이었습니다.

4.8.x required, 5.x not supported
htps: //wpcぃ. 오 rg / 두 cs / p

이번에는 5 계에서 시도했지만 잘 갔습니다.

운영 WordPress 설치



개발을 위해 로컬 환경의 WordPress를 설치합니다.
Zip 파일을 삭제하거나 WP-CLI로 설치합니다.

이번은 htp : // 에 x1. 에서 v 라는 URL로 구축했습니다.

플러그인 편지지, 테스트용 WordPress 설치


$ wp scaffold plugin twitter-shortcode

이제 /wp-content/plugins/ 에 twitter-shortcode 라는 디렉토리가 생겼습니다.

이동하여 테스트용 WordPress를 설치합니다.
$ cd $(wp plugin path --dir my-plugin)
$ bash bin/install-wp-tests.sh wordpress_test root 'wordpress' localhost latest

install-wp-tests.sh의 인수는 데이터베이스 이름, 사용자, 암호, DB 호스트 및 WordPress 버전 순서입니다.

뒤에 두 개는 선택 사항입니다.

여기서 여러 번 망설였습니다. 데이터베이스가 이미 존재하는 경우에는 잘 작동하지 않습니다.

데이터베이스가 이미 존재하는 오류



테스트 용이 아닌 데이터베이스와 공유했기 때문에 오류가 발생했습니다.


수동으로이 데이터베이스를 삭제하면 잘 작동합니다.
$ mysqladmin -h mysql.dev -u root -p drop wordpress_test
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'wordpress_test' database [y/N] y
Database "wordpress_test" dropped

이 후에 다시 통과합니다.
이 작업을 단계를 스크립팅하는 것이 공개되었습니다. (후술)

phpunit


$ phpunit



통과했습니다!

기타



다른 플러그인의 유닛 테스트를 통해 보기



테스트 케이스가 풍부한 Custom Post Type Permalinks를 통해 보았습니다.

htps : // 기주 b. 코 m / 토 로니 t / 쿠 s와 m 포 스타 티 페퍼 ㄴ



제대로 통과했습니다. 테스트 많이라면 멋지네요.

No such file or directory로 통과하지 못함



며칠 후 다시 테스트를 시도하는 중 오류가 발생했습니다.
/tmp를 사용하고 있거나/tmp/wordpress 관련 파일이 사라졌습니다.
다시 설치를 할 것입니다.
이 오류를 여러 번 경험하고 있으므로주의가 필요합니다.
$ phpunit
PHP Warning:  require_once(/tmp/wordpress-tests-lib/includes/functions.php): failed to open stream: No such file or directory in /Users/yousan/Sites/ex1.aramaki.l2tp.org/wp-content/plugins/twitter-shortcode/tests/bootstrap.php on line 8

Warning: require_once(/tmp/wordpress-tests-lib/includes/functions.php): failed to open stream: No such file or directory in /Users/yousan/Sites/ex1.aramaki.l2tp.org/wp-content/plugins/twitter-shortcode/tests/bootstrap.php on line 8
PHP Fatal error:  require_once(): Failed opening required '/tmp/wordpress-tests-lib/includes/functions.php' (include_path='.:/usr/local/Cellar/php56/5.6.2/lib/php/SebastianBergmann/') in /Users/yousan/Sites/ex1.aramaki.l2tp.org/wp-content/plugins/twitter-shortcode/tests/bootstrap.php on line 8

Fatal error: require_once(): Failed opening required '/tmp/wordpress-tests-lib/includes/functions.php' (include_path='.:/usr/local/Cellar/php56/5.6.2/lib/php/SebastianBergmann/') in /Users/yousan/Sites/ex1.aramaki.l2tp.org/wp-content/plugins/twitter-shortcode/tests/bootstrap.php on line 8

다시 설치하면 잘 진행됩니다.
$ bash bin/install-wp-tests.sh wordpress_test root 'wordpress' localhost latest
$ phpunit

테스트 데이터베이스, 테스트 라이브러리 재설치



위의 'MySQL 데이터베이스가 이미 존재하는 오류'과 '/tmp에 넣은 테스트용 WordPress 라이브러리가 사라집니다.

기본적으로는 이 쉘 스크립트에 인수를 주어 두드리면 됩니다만, 자주 만들거나 버리거나 하지 않으면 안 되는 환경이므로, 한 번 버려도 굉장히 재작성할 때까지를 처리하기 위한 쉘 스크립트를 준비했습니다.
@miya0001
curl -L https://raw.githubusercontent.com/miya0001/install-wp-test-env/master/install.sh | bash

"좋아 지금부터 테스트 써 로직 쓰자-"라고 할 때 리셋하면 좋을 것 같습니다.

WP_TESTS_DIR 설정이 통과되지 않았습니다.



/tmp이니까 지워지고 있을까, 라고 생각해 설치처를 변경하려고 했습니다만 잘 작동하지 않았습니다.
$ export WP_TESTS_DIR=/Users/yousan/wp-tests-lib

테스트 환경 설치 스크립트 업데이트



테스트 환경을 구축해 주는 install-wp-test.sh 도 세세하게 갱신되고 있습니다.
GitHub에서 최신 버전을 데리러 업데이트했습니다.
$ curl -o bin/install-wp-tests.sh  https://raw.githubusercontent.com/wp-cli/wp-cli/master/templates/install-wp-tests.sh

좋은 웹페이지 즐겨찾기