En utilisant les réponses de ce site et d'autres ressources, j'ai commencé à écrire mon prochain plugin en utilisant les tests PHPUnit et l'environnement de test WordPress. Distiller ce que j'ai dans le bootstrap.php
de mon plugin:
define( 'WP_TESTS_DIR', 'pathToMyWordPressTestsFromSVN');
define( 'TEST_PLUGIN_FILE', 'pathToMyPlugin/myPlugin.php' );
require_once WP_TESTS_DIR . 'includes/functions.php';
require WP_TESTS_DIR . 'includes/bootstrap.php';
function _manually_load_plugin() {
require TEST_PLUGIN_FILE;
if(is_plugin_active(TEST_PLUGIN_FILE)){
echo "PLUGIN IS LOADED AND WORKING!!!!";
}
}
tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );
// Normally you'd find "require WP_TESTS_DIR . 'includes/bootstrap.php';" down here...
Dans pratiquement tous les exemples, l’environnement de test WordPress bootstrap.php
est chargé en dernier.
Cela semble étrange, car si je le charge plus tôt, j’ai accès à des fonctions telles que is_plugin_active
qui, j’imagine, seront utiles pour tester des plugins nécessitant d’autres ... et se retirer si les exigences ne sont pas chargées pour une raison quelconque.
Y at-il une raison pour que l'environnement de test est amorcé à la fin ... autre que l'habitude/convention?
La raison pour laquelle le bootstrap de test WordPress est chargé à la fin est précisément parce qu'il charge WordPress :
// Load WordPress
require_once ABSPATH . '/wp-settings.php';
Si vous n'accrochez pas votre fonction pour charger votre plugin dans 'muplugins_loaded'
avant , y compris l'amorçage, votre plugin ne sera pas chargé avec WordPress. Dans la plupart des cas, cela signifie que votre plug-in ne sera pas configuré correctement (par exemple, 'init'
aura déjà été déclenché avant que les fonctions de votre plug-in ne soient connectées).
En ce qui concerne la vérification des dépendances, vous pouvez probablement le faire en vous connectant à l'action 'plugins_loaded'
:
function _check_for_dependencies() {
if ( ! is_plugin_active( 'some-plugin/some-plugin.php' ) ) {
exit( 'Some Plugin must be active to run the tests.' . PHP_EOL );
}
}
tests_add_filter( 'plugins_loaded', '_check_for_dependencies' );
Ou, vous pouvez simplement laisser le chargement d'amorçage de WordPress se terminer et vérifier vos dépendances après.