Valeur de retour moqueuse des fonctions/filtres et plus encore pour tester WordPress avec PHPUnit.
Écrire des tests avec WordPress est pénible, car les très anciens tests unitaires officiels de WordPress nécessitent toujours beaucoup de pratique pour les projets personnalisés et d'autres frameworks de test tentent de se moquer de WordPress. La solution est d'avoir un joli package de tests d'intégration qui...
Globalement, l'objectif est la simplicité et ne pas perdre de temps (pour moi et pour vous).
Téléchargez ou simplement
composer install --dev pretzlaw/wp-integration-test
Outre PHP et WordPress, nous n’en avons pas besoin (voir Packagist.org pour plus de détails) :
Si vous partez de zéro et que vous n'avez pas encore de bootstrapping, vous pouvez utiliser notre bootstrapping comme ceci :
< phpunit bootstrap = " vendor/Pretzlaw/WPInt/bootstrap.php " >
< testsuites >
< testsuite name = " default " >
<!-- CHANGE THIS TO WHERE YOUR PHPUNIT TEST CLASSES ARE -->
< directory >lib/tests</ directory >
</ testsuite >
</ testsuites >
</ phpunit >
L'utilisation de ce bootstrap.php n'est pas obligatoire. N'hésitez pas à créer un fichier d'amorçage personnalisé lorsque vous devez également tester la CLI et les éléments d'administration.
Si vous connaissez déjà PHPUnit, affirmer et se moquer ne devrait pas être quelque chose de nouveau. Avec WPInt, cela peut être fait pour la plupart des tests PHPUnit en ajoutant un trait :
class FooTest extends PHPUnit Framework TestCase {
use Pretzlaw WPInt Traits WordPressTests;
function testBar () {
// Assertions (simple or with special constraints)
static :: assertActionHasCallback ( ' init ' , ' my_own_init ' );
static :: assertShortcodeHasCallback (
[ new IsInstanceOf ( MyOwn::class ), ' some_method ' ],
' my_shortcode '
);
// Mock posts or meta-data
$ this -> mockGetPost ( 1337 )-> andReturn ( / * your wp post mock */ );
$ this -> mockPostMeta ( ' some_key ' )-> andReturn ( ' Some value! ' ); // For all posts
$ this -> mockMetaData ( ' my-own-cpt ' , ' another_key ' , 1337 )-> andReturn ( ' ec ' ); // Just for ID 1337
// Mock actions, filter, cache, ...
$ this -> mockFilter ( ' user_has_cap ' )
-> andReturn ( true );
$ this -> mockCache ()
-> shouldReceive ( ' get ' )
-> with ( ' my_own_cache ' )
-> andReturn ( ' yeah ' );
// Or use one of several shortcuts and helper
$ this -> disableWpDie ();
}
}
Comme vous le voyez ci-dessus, nous utilisons mockery/mockery:~1 qui est plus facile à utiliser et à maintenir mais utilise des noms de méthodes différents (par exemple shouldReceive
andReturn
comme vu ci-dessus).
wp_die()
N'hésitez pas à demander des fonctionnalités supplémentaires ou à signaler des raccourcis plus courants en ouvrant un numéro.
Copyright 2021 Pretzlaw (rmp-up.de)
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.