web-dev-qa-db-ja.com

PHPUnitとWP-CLIを使用してWordPressプラグインのテストケースを書くことができません

WordPressセットアップ:VVV を使用してWordPressをインストールしました。

PHPUnitセットアップ:Pippinのブログ にあるようにテストスイートをセットアップしました。そしてvagrant sshを使ってボックスマシンにログインした後にPHPUnitにアクセスします。

テストケース:テストケースを/tests/ファイルのtest-{my-plugin-filename}.phpフォルダー内に書いています。

function test_my_plugin_method() {
    $links = plugin_method();
}

どこで動けなくなったのですか?

PHPUnitを実行すると、以下のエラーが発生します。

Error: Call to undefined function plugin_method()

次の行を追加しました。

require_once( dirname( dirname( __FILE__ ) ) . '/plugin-file.php' );

しかし、私は何かが足りないと思っています。どんな助けでも大いに感謝されるでしょう。

編集1:

私はwp scaffold plugin-testsを実行し、それからPippinのブログで言及されているように次の行を実行しました(リンクについては上記を参照してください)。

bash bin/install-wp-tests.sh wordpress_test root '' localhost latest

最後にphpunitを実行しました。

bootstrap.php

Bootstrap.phpファイルには何も変更はありません。

<?php

$_tests_dir = getenv( 'WP_TESTS_DIR' );
if ( ! $_tests_dir ) {
    $_tests_dir = '/tmp/wordpress-tests-lib';
}

require_once $_tests_dir . '/includes/functions.php';

function _manually_load_plugin() {
    require dirname( dirname( __FILE__ ) ) . '/my-plugin.php';
}
tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );

require $_tests_dir . '/includes/bootstrap.php';
3

plugin_method()は一般に公開されていますか?クラスメソッドであるか、ネームスペースに属しているかを確認してください。

それがクラスに属している場合は、メソッドを呼び出す前にそのクラスのオブジェクトを作成する必要があります。同様に、それが名前空間メソッドであるならば、あなたは完全な名前空間で関数を呼ばなければなりません。

1
Sudar

ユニットテストのブートストラップファイルに完全なコードを表示できますか?

私はプラグインが正しくロードされないだろうと思っています、 これがテスト実行時にmu-pluginとしてロードする方法 です。

とにかく、ここでテストをすぐに始める ためにWP CLIのコマンドwp scaffold plugin-testsを使うことをお勧めします

1
Nikhil Chavan