web-dev-qa-db-fra.com

Impossible d'écrire des scénarios de test pour un plugin WordPress utilisant PHPUnit et WP-CLI

Configuration WordPress:WordPress installé à l’aide de VVV .

Configuration de PHPUnit:J'ai configuré la suite de tests comme indiqué dans Le blog de Pippin . Et accéder à PHPUnit après vous être connecté à la machine à l'aide de vagrant ssh.

Cas de test:J'écris mes cas de test dans le dossier /tests/ du fichier test-{my-plugin-filename}.php.

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

Où je suis coincé?

Lorsque je lance PHPUnit, j'obtiens l'erreur suivante.

Error: Call to undefined function plugin_method()

J'ai ajouté la ligne suivante.

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

Mais je crois que je manque quelque chose. Toute aide serait très appréciée.

Éditer 1:

J'ai exécuté wp scaffold plugin-tests et ensuite la ligne suivante comme mentionné dans le blog de Pippin (voir le lien ci-dessus).

bash bin/install-wp-tests.sh wordpress_test root '' localhost latest

Finalement j'ai exécuté phpunit.

bootstrap.php

Je n'ai rien changé dans le fichier bootstrap.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';
3

La plugin_method() est-elle accessible au public? Vérifiez si c'est une méthode de classe ou appartient à un espace de noms.

Si elle appartient à une classe, vous devez alors créer un objet de la classe avant de pouvoir appeler la méthode. De même s'il s'agit d'une méthode d'espace de noms, vous devez appeler la fonction avec l'espace de noms complet.

1
Sudar

Pouvez-vous afficher le code complet dans le fichier bootstrap de vos tests unitaires?

Je suppose que le plugin ne serait pas chargé correctement, voici comment il peut être chargé en tant que mu-plugin lors de l'exécution de tests.

Quoi qu'il en soit, je vous conseillerais d'utiliser WP la commande wp scaffold plugin-tests de la CLI pour démarrer rapidement avec des tests documentés ici .

1
Nikhil Chavan