无法使用PHPUnit和WP-CLI为WordPress插件编写测试用例

时间:2016-06-29 作者:Maria Daniel Deepak

WordPress setup: 使用安装的WordPressVVV.

PHPUnit setup: 我已经按照中所述设置了测试套件Pippin\'s blog. 使用登录到机器后访问PHPUnitvagrant ssh.

Test case: 我在/tests/ 中的文件夹test-{my-plugin-filename}.php 文件

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

Where I\'m stuck?

当我跑步时PHPUnit, 我得到以下错误。

Error: Call to undefined function plugin_method()

我添加了以下行。

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

但我相信我错过了什么。任何帮助都将不胜感激。

Edit 1:

我执行wp scaffold plugin-tests 然后是Pippin博客中提到的下面一行(请参阅上面的链接)。

bash bin/install-wp-tests.sh wordpress_test root \'\' localhost latest
最后我执行了phpunit.

bootstrap.php

我在引导程序中没有更改任何内容。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\';

2 个回复
最合适的回答,由SO网友:Sudar 整理而成

plugin_method() 是否公开?检查它是类方法还是属于命名空间。

如果它属于一个类,那么必须先创建该类的对象,然后才能调用该方法。类似地,如果它是一个命名空间方法,则必须使用完整的命名空间调用该函数。

SO网友:Nikhil Chavan

您能在单元测试引导文件中显示完整代码吗?

我猜插件不会正确加载,here is how 在运行测试时,可以将其加载为mu插件。

无论如何,我建议您使用WP CLI的命令wp scaffold plugin-tests 开始快速记录测试here.

相关推荐

WP-CLI插件安装导致PHP致命错误-在不在对象上下文中时使用$This

运行时sudo wp install plugin pluginname --allowroot它会导致错误:PHP致命错误:未捕获错误:在/var/www/html/wp-content/plugins/pluginname/blocks中不在对象上下文中时使用$this。菲律宾比索:89我们有一个自定义插件,其中包含以下内容: class Block{ public static function Run() { add_action(\'e