Esta é uma estrutura de teste orientada a documentação para PHP 5.3 a 7.x. Seu objetivo é garantir que seus códigos de exemplo funcionem por meio de testes unitários. Inspirado nos testes de Golang "Exemplos".
Veja um exemplo abaixo. A primeira seção é um exemplo de código que será testado. O comentário que começa com Output
é o código de teste.
<?php
function hello ( string $ name ): string {
return ' hello ' . $ name ;
}
echo hello ( ' alice ' ) . "n" ;
echo hello ( ' bob ' ) . "n" ;
// Output:
// hello alice
// hello carol
Este código de exemplo está quebrado. A palavra "carol" é esperada como saída, porém não aparece. Este caso de teste falha, mas você sabe que o código de exemplo tem um problema e pode corrigi-lo.
Livexample executa as seguintes etapas:
Output
no código de exemplo analisando-a.Às vezes, códigos de exemplo são quebrados, adicionando novos recursos, esquecendo de atualizá-los, solicitações pull que não cuidam dos códigos de exemplo e assim por diante.
Códigos de exemplo quebrados são uma experiência ruim para usuários de bibliotecas.
Ao usar o Livexample, você obterá benefícios:
Instale suin/livexample
via Composer:
composer require --dev suin/livexample
Adicione ExampleTest.php
ao seu diretório de testes:
use Livexample PHPUnit ExampleTestCase ;
class ExampleTest extends ExampleTestCase
{
public function exampleFiles ()
{
// specify your example code directory.
return self :: exampleDirectory ( ' example ' );
}
}
Execute o phpunit:
phpunit
Existem duas sintaxes para asserção:
// Output: {expected output}
//=> {expected output}
echo 1 ; // Output: 1
echo " hello " ; //=> hello
var_dump ([ 1 , 2 , 3 ]);
// Output:
// array(3) {
// [0] =>
// int(1)
// [1] =>
// int(2)
// [2] =>
// int(3)
// }
var_dump($object)
A função var_dump()
imprime identificadores de objeto, que são #some-number
próximos ao nome da classe. Como os identificadores dependem do ambiente de execução, você não pode codificá-los na instrução Output:
:. Em vez de codificar o identificador, você pode usar um espaço reservado %d
para o número:
<?php
var_dump ( new stdClass );
// Output:
// object(stdClass)#%d (0) {
// }
php
php -d auto_prepend_file=vendor/autoload.php
-d xdebug.overload_var_dump=0
example/simple-usage.php
O suporte oficial para PHP 5.3 terminou, no entanto, RHEL/CentOS continua suportando PHP 5.3 mesmo em 2017. Os antigos ambientes PHP ainda permanecem no serviço em execução hoje. Livexample também deve ser usado para refatorar esses ambientes antigos.
Consulte CHANGELOG para obter mais detalhes.
Consulte CONTRIBUINDO para obter mais detalhes. Por favor, corrija meu inglês.