2017-11-23 16 views
0

PHPユニットを使用して、アドオンで動作するように作成したAPIクラスをテストしようとしていますWordPressのプラグイン重力フォーム。このクラスは、wp_remote_request()などのWordPressのいくつかの関数に依存しています。WordPress(wp-load.php)の外でWordPressを使用しています: "ヘッダー情報を変更できません - 既に送信されたヘッダー"

これらのWordPressの依存関係へのアクセス権を持っているために、私が使用して私のPHPユニットテストクラス内のwp-load.phpを要求しようとしている:私はこれをしようとすると、私が得る、しかし

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

をPHPUnitのを実行している時に、私の端末で出力以下:

WP-含まれて/のfunctions.phpファイルを見てみると
 

    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 

、私はエラーを引き起こすものである、()関数dead_db内ライン3760で以下のクラスを見ることができます:

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

確かに、wp-load.phpを必要とすることは些細なことで、PHPユニットを使っていくつかのWordPressの依存関係をテストできますか?私はここで間違っていることを指摘してくれます。私は、自分のAPIクラスから1つか2つの関数をテストしたいので、完全な本格的なWordPress単体テストの作成を避けようとしています。

+0

私は実際にphpunitに慣れていませんが、なぜこれらの機能を嘲笑しませんか? – janh

+0

それはオプションですが、私がそれをやろうとしているようにこれが簡単に働くべきではありませんか? –

+0

また、実際のGETリクエストの結果に基づいてテストする必要があるので、WordPressの依存関係を動作させるよりも、これらのメソッドを擬似するほうが簡単ではないと私は確信していません。 –

答えて

1

プラグイン/アドオンを実際に作成せずに一部の機能をテストしたい場合があります。次のコードスニペットでtest.phpをファイルを作成し、WordPressのルートディレクトリに置き:

<?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> 

これは、実際に作成せずにプラグイン機能をテストするために必要なWordPressの機能のすべてをロードする簡単な方法ですプラグイン。ご覧のとおり、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/の正式なWordPressのリンクを確認してください –

+1

ありがとう、私はwp-cliを使用してこれを得ることができました。 。私はwp-load.phpを要求しようと間違った木を吠えていた。 –

関連する問題