Verspotten des Rückgabewerts von Funktionen/Filtern und mehr zum Testen von WordPress mit PHPUnit.
Das Schreiben von Tests mit WordPress ist mühsam, da die sehr alten offiziellen WordPress-Unit-Tests bei benutzerdefinierten Projekten immer viel praktische Arbeit erfordern und andere Test-Frameworks versuchen, WordPress zu verspotten. Die Lösung besteht darin, ein schönes Integrationstestpaket zu haben, das ...
Insgesamt ist das Ziel Einfachheit und keine Zeitverschwendung (für mich und Sie).
Herunterladen oder einfach
composer install --dev pretzlaw/wp-integration-test
Außer PHP und WordPress benötigen wir nicht so viel (siehe Packagist.org für weitere Details):
Wenn Sie bei Null anfangen und noch nicht über Bootstrapping verfügen, können Sie unser Bootstrapping wie folgt verwenden:
< 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 >
Die Verwendung dieser bootstrap.php ist nicht zwingend erforderlich. Sie können gerne eine benutzerdefinierte Bootstrapping-Datei erstellen, wenn Sie auch CLI- und Admin-Sachen testen müssen.
Wenn Sie PHPUnit bereits kennen, sollten Behauptungen und Verspottungen nichts Neues sein. Mit WPInt kann dies für die meisten PHPUnit-Tests durch Hinzufügen einer Eigenschaft erreicht werden:
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 ();
}
}
Wie Sie oben sehen, verwenden wir „spotery/mockery:~1“, das einfacher zu verwenden und zu warten ist, aber andere Methodennamen verwendet (z. B. shouldReceive
und andReturn
, wie oben gezeigt).
wp_die()
Sie können gerne zusätzliche Funktionen anfordern oder auf häufigere Verknüpfungen hinweisen, indem Sie eine Ausgabe öffnen.
Copyright 2021 Pretzlaw (rmp-up.de)
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.