I have found myself writing PHPUnit tests for WordPress plugins lately (using wordpress-tests) and the code that I’m working with has a dependency on BuddyPress. Enabling BuddyPress for WordPress unit testing requires a bit of hoop jumping because you can’t use the wp_tests_options
global variable as you would any other plugin in your local bootstrap file (which is configured in phpunit.xml
):
$GLOBALS['wp_tests_options'] = array( 'active_plugins' => array( 'wp-debug-robot/wp-debug-robot.php' ), );
Instead, run the following within your bootstrap file after you’ve included the wordpress-tests
bootstrap:
// activate the buddypress plugin for your network (if you aren't running MULTISITE, the third parameter should be FALSE) activate_plugin( WP_CONTENT_DIR . '/plugins/buddypress/bp-loader.php', '', TRUE, TRUE ); // set the components that you want to activate $active_components = array( 'activity' => TRUE, 'friends' => FALSE, 'groups' => FALSE, 'messages' => TRUE, 'xprofile' => TRUE, 'blogs' => TRUE, ); // update your site's bp-active-components option with your configured settings update_option( 'bp-active-components', $active_components ); // include the file that contains the logic you need to create BuddyPress tables require_once WP_CONTENT_DIR . '/plugins/buddypress/bp-core/admin/bp-core-schema.php'; // run the installer bp_core_install();
With that in place, your tests should have BuddyPress classes & functions available to you – complete with BP tables in your database!
Comments
One response to “Activating BuddyPress for PHPUnit WordPress-tests”
BuddyPress has it’s own tests, with an extended factory class etc. I think it is more convenient to use these.