我想为插件编写单元测试。我已经使用WP-CLI构建了测试WordPress实例,并且可以成功运行测试。
我为其编写单元测试的插件是一个特定于站点的插件,而不是一个专为wordpress开发的独立插件。组织存储库。作为一个特定于站点的插件,一些函数使用其他插件提供的函数,例如高级自定义字段。
Question: 在测试特定于站点的插件时,如何在WP-CLI搭建的站点中安装和加载其他插件?
我看了看bin/install-wp-test.sh
希望我可以添加额外的wp-cli命令来安装和激活所需的插件,但此脚本似乎没有使用wp-cli创建测试WordPress实例。
我还尝试更新_manually_load_plugin
内的功能tests/bootstrap.php
文件,但它没有任何效果。
/**
* PHPUnit bootstrap file
*
* @package Site Specific Plugin
*/
$_tests_dir = getenv( \'WP_TESTS_DIR\' );
if ( ! $_tests_dir ) {
$_tests_dir = \'/tmp/wordpress-tests-lib\';
}
// Give access to tests_add_filter() function.
require_once $_tests_dir . \'/includes/functions.php\';
/**
* Manually load the plugin being tested.
*/
function _manually_load_plugin() {
require dirname( dirname( __FILE__ ) ) . \'/battingforchange.php\';
// Update array with plugins to include ...
$plugins_to_active = array(
\'advanced-custom-fields-pro/acf.php\'
);
update_option( \'active_plugins\', $plugins_to_active );
}
tests_add_filter( \'muplugins_loaded\', \'_manually_load_plugin\' );
// Start up the WP testing environment.
require $_tests_dir . \'/includes/bootstrap.php\';
最合适的回答,由SO网友:Mark Kaplun 整理而成
您试图做的不是单元测试,而是集成测试,由于集成通常需要一些特定于相关插件的初始化,因此很难给出一个比明显的“包含插件文件”更一般的答案
单元测试的思想是检查您的API是否执行了它们应该执行的操作,基本假设应该是外部API正常工作,否则您必须编写的测试数量没有限制。
一旦您假设外部API正常工作,那么如果您实际调用它们,或者只是用相同的名称编写一个模仿其行为的函数,则没有任何区别。
作为这个想法的一个例子。在我编写的插件中,有几个设置可以控制哪个参数WP_Query
正在调用。为了测试这一点,我只需检查参数的结果数组,而不必实际调用WP_Query
.