In het bericht “Unit tests voor WordPress plugins” uit juni 2013 schreef ik al eerder over unit testing voor WordPress plugins. In dit bericht een korte update over hoe je PHPUnit in 2014 voor WordPress plugins kunt inrichten.
In het WordPress.org core handboek staat in het artikel “Automated Testing” meer informatie over unit testing en WordPress. In dit artikel staat onder andere beschreven hoe je WordPress test suite kunt uitvoeren.
cd ~/Projects svn co https://develop.svn.wordpress.org/trunk/ wordpress-develop
Zodra je het ‘wordpress-develop’ project op je lokale computer hebt staan dien je nog een database aan te maken en het ‘wp-tests-config.php’ te voorzien van de juiste gegevens.
Vervolgens kun je .bash_profile bestand bewerken met behulp van het volgende commando:
nano ~/.bash_profile
En het volgende toevoegen:
# WordPress tests export WP_TESTS_DIR=~/Projects/wordpress-develop/tests/phpunit
Op deze manier weet Bash ook waar je WordPress tests map staat. Vervolgens kun je in je WordPress plugin een PHPUnit XML-bestand aanmaken.
<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="tests/bootstrap.php" colors="true" > <testsuites> <testsuite name="WordPress Plugins Test Suite"> <directory>./tests/</directory> </testsuite> </testsuites> <filter> <whitelist> <directory>./src</directory> </whitelist> </filter> <logging> <log type="coverage-clover" target="build/logs/clover.xml"/> </logging> </phpunit>
In de ’tests’ map binnen je WordPress plugin kan vervolgens een ‘bootstrap.php’ bestand neergezet worden met de volgende inhoud:
<?php $_tests_dir = getenv( 'WP_TESTS_DIR' ); if ( ! $_tests_dir ) { $_tests_dir = '/tmp/wordpress-tests-lib'; } require_once $_tests_dir . '/includes/functions.php'; require_once __DIR__ . '/../vendor/autoload.php'; require $_tests_dir . '/includes/bootstrap.php';
Een voorbeeld van deze test setup is terug te vinden in een aantal van de WordPress Pay gateways bibliotheken.