2017-11-23 5 views
0

PHP 단위를 사용하여 내가 추가 기능으로 작업하도록 작성한 API 클래스를 테스트하려고합니다. WordPress 플러그인 Gravity Forms. 이 클래스는 wp_remote_request()와 같은 WordPress의 여러 함수에 의존합니다. 나는이 때, 나는를 얻을WordPress (wp-load.php) 외부에서 WordPress 사용 : "헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더"

define('WP_USE_THEMES', false); 
require '../../../wp-load.php'; 

을 그러나 이러한 워드 프레스 종속성에 액세스하기 위해

, 나는 사용하여 내 PHP 단위 테스트 클래스에서 WP-load.php을 요구하기 위해 노력하고있어 실행 phpunit을에 내 터미널에서 출력을 다음

 

    Cannot modify header information - headers already sent by (output started at phar:///usr/local/Cellar/phpunit/6.4.2/libexec/phpunit-6.4.2.phar/phpunit/Util/Printer.php:112) 

    ../wp-includes/functions.php:3760 
    ../wp-includes/load.php:422 
    ../wp-settings.php:110 
    ../wp-config.php:228 
    ../wp-load.php:37 
    ../wp-content/plugins/gravity-dpo/tests/TestCaseAddon.php:37 

상기 찾고 WP-포함/functions.php 파일, 나는 오류를 발생 무엇 인() 함수 dead_db 내에서 라인 3760에 다음 클래스를 볼 수 있습니다 :

header('Content-Type: text/html; charset=utf-8'); 

wp-load.php가 필요합니다. PHP 단위를 사용하여 WordPress 의존성을 테스트 할 수 있습니까? 나는 여기서 내가 잘못하고있는 것에 대해 어떤 조언을 해줄 것이다. 난 그냥 내 API 클래스에서 하나 또는 두 개의 기능을 테스트하기 때문에 설정을 완벽하게 본격적인 워드 프레스 단위를 만드는 것을 피하기 위해 노력하고있어.

+0

저는 phpunit에 대해 경험이 없지만 왜이 기능들을 모의하지 않습니까? – janh

+0

그게 옵션이지만, 내가 이것을하려는 방식으로 작동하는 것이 간단하지 않아야합니까? –

+0

또한 실제 GET 요청의 결과를 기반으로 테스트해야하므로 WordPress 종속성을 작동시키는 것보다 이러한 방법을 모의하는 것이 더 쉽다고 확신하지 않습니다 –

답변

1

경우에 따라 실제로 플러그인/추가 기능을 만들지 않고 일부 기능을 테스트하려는 경우가 있습니다. 다음 코드와 test.php 파일을 생성하고 워드 프레스 루트 디렉토리에 배치 :

<?php 
// Load the WordPress Environment 
// define('WP_DEBUG', true); /* uncomment for debug mode */ 
require(./wp-load.php); 
// require_once (./wp-admin/admin.php); /* uncomment for is_admin() */ 
?> 
<pre> 
<?php 
/* test stuff here */ 
var_dump(is_admin()); 
?> 
</pre> 

이 사실을 만들지 않고 기능을 플러그인 테스트하기 위해 필요한 워드 프레스의 모든 기능을로드하는 빠른 방법입니다 플러그인. 보시다시피 wp-load.php는 파일의 시작 부분에 포함되어 있습니다. 관리자 측 기능을 테스트하려면 wp-admin/admin.php을 포함 할 수도 있습니다.

필요한 WordPress 코어 파일을 포함하고 나면 플러그인에 존재하는 다른 코드를 테스트해야합니다. 테스트가 완료되면 test.php 파일을 삭제하는 것을 잊지 마십시오.

+0

그래서이 방법을 사용할 수 없습니다 (wp- load.php) WordPress 루트 디렉토리 외부에 있습니까? –

+0

이 공식 https://make.wordpress.org/cli/handbook/plugin-unit-tests/에 대한 공식 워드 프레스 링크를 확인하십시오. –

+1

감사합니다. wp-cli를 사용하여이 기능을 사용할 수 있었으며 스캐 폴드 도구입니다. . 나는 wp-load.php를 요구함으로써 잘못된 나무를 짖고 있었다. –