PHPUnit으로 WordPress를 테스트하기 위해 함수/필터 등의 반환 값을 모의합니다.
WordPress로 테스트를 작성하는 것은 아주 오래된 공식 WordPress 단위 테스트가 사용자 정의 프로젝트를 위해 항상 많은 손을 필요로 하고 다른 테스트 프레임워크가 WordPress를 조롱하려고 하기 때문에 고통스럽습니다. 해결책은 다음과 같은 훌륭한 통합 테스트 패키지를 갖는 것입니다.
전반적으로 목표는 단순함 이며 시간을 허비하지 않는 것 입니다(나와 당신 모두를 위해).
다운로드하거나 그냥
composer install --dev pretzlaw/wp-integration-test
PHP와 WordPress 외에는 그렇게 많은 것이 필요하지 않습니다(자세한 내용은 Packagist.org 참조).
처음부터 시작하고 아직 부트스트래핑을 수행하지 않은 경우 다음과 같이 부트스트래핑을 사용할 수 있습니다.
< phpunit bootstrap = " vendor/Pretzlaw/WPInt/bootstrap.php " >
< testsuites >
< testsuite name = " default " >
<!-- CHANGE THIS TO WHERE YOUR PHPUNIT TEST CLASSES ARE -->
< directory >lib/tests</ directory >
</ testsuite >
</ testsuites >
</ phpunit >
이 bootstrap.php 사용은 필수는 아닙니다 . CLI 및 관리 항목도 테스트해야 하는 경우 사용자 정의 부트스트래핑 파일을 자유롭게 생성하십시오.
PHPUnit을 이미 알고 있다면 어설션과 조롱이 새로운 것이 되어서는 안 됩니다. WPInt를 사용하면 하나의 특성을 추가하여 대부분의 PHPUnit 테스트에 사용할 수 있습니다.
class FooTest extends PHPUnit Framework TestCase {
use Pretzlaw WPInt Traits WordPressTests;
function testBar () {
// Assertions (simple or with special constraints)
static :: assertActionHasCallback ( ' init ' , ' my_own_init ' );
static :: assertShortcodeHasCallback (
[ new IsInstanceOf ( MyOwn::class ), ' some_method ' ],
' my_shortcode '
);
// Mock posts or meta-data
$ this -> mockGetPost ( 1337 )-> andReturn ( / * your wp post mock */ );
$ this -> mockPostMeta ( ' some_key ' )-> andReturn ( ' Some value! ' ); // For all posts
$ this -> mockMetaData ( ' my-own-cpt ' , ' another_key ' , 1337 )-> andReturn ( ' ec ' ); // Just for ID 1337
// Mock actions, filter, cache, ...
$ this -> mockFilter ( ' user_has_cap ' )
-> andReturn ( true );
$ this -> mockCache ()
-> shouldReceive ( ' get ' )
-> with ( ' my_own_cache ' )
-> andReturn ( ' yeah ' );
// Or use one of several shortcuts and helper
$ this -> disableWpDie ();
}
}
위에서 볼 수 있듯이 우리는 사용 및 유지 관리가 더 쉽지만 다른 메서드 이름을 사용하는 mockery/mockery:~1을 사용하고 있습니다(예: 위에서 본 것처럼 shouldReceive
, andReturn
).
wp_die()
비활성화이슈를 열어서 자유롭게 추가 기능을 요청하거나 보다 일반적인 단축키를 알려주세요.
저작권 2021 Pretzlaw (rmp-up.de)
본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 취득한 모든 사람에게 사용, 복사, 수정, 병합에 대한 권리를 포함하되 이에 국한되지 않고 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여됩니다. , 소프트웨어 사본을 게시, 배포, 재라이센스 부여 및/또는 판매하고, 소프트웨어를 제공받은 사람에게 다음 조건에 따라 그렇게 하도록 허용합니다.
위의 저작권 고지와 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않고 명시적이거나 묵시적인 어떠한 종류의 보증도 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 작성자나 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 소프트웨어나 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 소프트웨어.