Simulação do valor de retorno de funções/filtros e muito mais para testar WordPress com PHPUnit.
Escrever testes com WordPress é uma dor, já que os antigos testes de unidade oficiais do WordPress sempre exigem muita mão de obra para projetos personalizados e outros frameworks de teste tentam zombar do WordPress. A solução é ter um pacote bacana de testes de integração que...
No geral, o objetivo é a simplicidade e não perder tempo (para mim e para você).
Baixe ou apenas
composer install --dev pretzlaw/wp-integration-test
Além de PHP e WordPress não precisamos de muito (veja Packagist.org para mais detalhes):
Se você começar do zero e ainda não tiver algum bootstrapping, poderá usar nosso bootstrapping assim:
< 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 >
Usar este bootstrap.php não é obrigatório. Sinta-se à vontade para criar um arquivo de inicialização personalizado, quando precisar testar a CLI e as coisas administrativas também.
Se você já conhece o PHPUnit, afirmar e zombar não deveria ser algo novo. Com WPInt pode ser para a maioria dos testes PHPUnit adicionando uma característica:
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 você pode ver acima, estamos usando mockery/mockery:~1 que é mais fácil de usar e manter, mas usa nomes de métodos diferentes (por exemplo, shouldReceive
e andReturn
como visto acima).
wp_die()
Sinta-se à vontade para solicitar recursos adicionais ou apontar atalhos mais comuns abrindo um problema.
Copyright 2021 Pretzlaw (rmp-up.de)
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.