Burlarse del valor de retorno de funciones/filtros y más para probar WordPress con PHPUnit.
Escribir pruebas con WordPress es una molestia, ya que las muy antiguas pruebas unitarias oficiales de WordPress siempre requieren mucha práctica para proyectos personalizados y otros marcos de prueba intentan burlarse de WordPress. La solución es tener un buen paquete de pruebas de integración que...
En general, el objetivo es la simplicidad y no perder el tiempo (para mí y para ti).
Descargar o simplemente
composer install --dev pretzlaw/wp-integration-test
Además de PHP y WordPress, no requerimos tanto (consulte Packagist.org para obtener más detalles):
Si comienza desde cero y aún no tiene un programa de arranque, puede utilizar nuestro programa de arranque de esta manera:
< 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 >
El uso de este bootstrap.php no es obligatorio. Siéntase libre de crear un archivo de arranque personalizado cuando necesite probar la CLI y también elementos administrativos.
Si ya conoce PHPUnit, afirmar y burlarse no debería ser algo nuevo. Con WPInt puede serlo para la mayoría de las pruebas PHPUnit agregando un rasgo:
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 ();
}
}
Como puede ver arriba, estamos usando mockery/mockery:~1, que es más fácil de usar y mantener, pero usa nombres de métodos diferentes (por ejemplo, shouldReceive
andReturn
como se ve arriba).
wp_die()
No dude en solicitar funciones adicionales o señalar atajos más comunes abriendo un problema.
Copyright 2021 Pretzlaw (rmp-up.de)
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.