Fornece características auxiliares para PHPUnit.
dd()
e d()
TestDouble
$this->getDouble()
$this->verifyInvoked()
$this->verifyInvokedOnce()
$this->verifyInvokedMultipleTimes()
$this->verifyNeverInvoked()
ReflectionHelper
$this->getPrivateProperty()
$this->setPrivateProperty()
$this->getPrivateMethodInvoker()
DebugHelper
Correr:
$ composer require --dev kenjis/phpunit-helper
TestDouble
Esta característica fornece métodos auxiliares para criar objetos simulados e verificar invocações.
Importe a característica KenjisPhpUnitHelperTestDouble
para sua classe de teste:
<?php
declare (strict_types= 1 );
namespace Foo Bar Test Unit ;
use Kenjis PhpUnitHelper TestDouble ;
use PHPUnit Framework ;
final class BazTest extends Framework TestCase
{
use TestDouble;
}
$this->getDouble()
parâmetro | tipo | descrição |
---|---|---|
$classname | corda | nome da classe |
$params | variedade | [nome_método => valor_retorno] |
[[nome_método => [valor_de retorno1, valor_de retorno2 [, ...]]] | ||
$constructor_params | falso/matriz | falso: desabilita construtor/array: parâmetros do construtor |
returns
(objeto) objeto simulado PHPUnit.
Obtém o objeto simulado do PHPUnit.
$ email = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' send ' ])
-> getMock ();
$ email -> method ( ' send ' )
-> willReturn ( true );
Você poderia escrever o código acima como abaixo:
$ email = $ this -> getDouble (CI_Email::class, [ ' send ' => true ]);
Você pode definir Closure como o valor de retorno de um método simulado.
$ ret = function () {
throw new RuntimeException ( ' Cannot send email! ' );
};
$ mock = $ this -> getDouble (CI_Email::class, [ ' send ' => $ ret ]);
Você também pode definir a própria simulação como o valor de retorno de um método simulado usando $this->returnSelf()
.
$ mock = $ this -> getDouble (CI_Email::class, [
' to ' => $ this -> returnSelf (),
' subject ' => $ this -> returnSelf (),
' send ' => true ,
]);
Você pode criar simulações com chamadas consecutivas.
$ mock = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' method ' ])
-> getMock ();
$ mock -> expects ( $ this -> any ())-> method ( ' method ' )
-> will ( $ this -> onConsecutiveCalls ( ' GET ' , ' POST ' , ' DELETE ' ));
Você poderia escrever o código acima como abaixo:
$ mock = $ this -> getDouble (
CI_Input::class,
[
[ ' method ' => [ ' GET ' , ' POST ' , ' DELETE ' ]],
]
);
$this->verifyInvoked()
parâmetro | tipo | descrição |
---|---|---|
$mock | objeto | Objeto simulado PHPUnit |
$method | corda | nome do método |
$params | variedade | argumentos |
Verifica se um método foi invocado pelo menos uma vez.
$ loader -> expects ( $ this -> atLeastOnce ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Você poderia escrever o código acima como abaixo:
$ this -> verifyInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedOnce()
parâmetro | tipo | descrição |
---|---|---|
$mock | objeto | Objeto simulado PHPUnit |
$method | corda | nome do método |
$params | variedade | argumentos |
Verifica se o método foi invocado apenas uma vez.
$ loader -> expects ( $ this -> once ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Você poderia escrever o código acima como abaixo:
$ this -> verifyInvokedOnce (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedMultipleTimes()
parâmetro | tipo | descrição |
---|---|---|
$mock | objeto | Objeto simulado PHPUnit |
$method | corda | nome do método |
$times | interno | vezes |
$params | variedade | argumentos |
Verifica se o método foi chamado exatamente $ vezes vezes.
$ loader -> expects ( $ this -> exactly ( 2 ))
-> method ( ' view ' )
-> withConsecutive (
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
);
Você poderia escrever o código acima como abaixo:
$ this -> verifyInvokedMultipleTimes (
$ loader ,
' view ' ,
2 ,
[
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
]
);
$this->verifyNeverInvoked()
parâmetro | tipo | descrição |
---|---|---|
$mock | objeto | Objeto simulado PHPUnit |
$method | corda | nome do método |
$params | variedade | argumentos |
Verifica se o método não foi chamado.
$ loader -> expects ( $ this -> never ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Você poderia escrever o código acima como abaixo:
$ this -> verifyNeverInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
ReflectionHelper
Essa característica fornece métodos auxiliares para acessar propriedades e métodos privados ou protegidos.
Mas geralmente não é recomendado testar propriedades ou métodos não públicos, então pense duas vezes antes de usar os métodos nesta característica.
Importe a característica KenjisPhpUnitHelperReflectionHelper
para sua classe de teste:
<?php
declare (strict_types= 1 );
namespace Foo Bar Test Unit ;
use Kenjis PhpUnitHelper ReflectionHelper ;
use PHPUnit Framework ;
final class BazTest extends Framework TestCase
{
use ReflectionHelper;
}
$this->getPrivateProperty()
parâmetro | tipo | descrição |
---|---|---|
$obj | objeto/string | nome do objeto/classe |
$property | corda | nome da propriedade |
returns
o valor da propriedade (misto).
Obtém o valor da propriedade privada ou protegida.
$ obj = new SomeClass ();
$ private_propery = $ this -> getPrivateProperty (
$ obj ,
' privatePropery '
);
$this->setPrivateProperty()
parâmetro | tipo | descrição |
---|---|---|
$obj | objeto/string | nome do objeto/classe |
$property | corda | nome da propriedade |
$value | misturado | valor |
Define o valor da propriedade privada ou protegida.
$ obj = new SomeClass ();
$ this -> setPrivateProperty (
$ obj ,
' privatePropery ' ,
' new value '
);
$this->getPrivateMethodInvoker()
parâmetro | tipo | descrição |
---|---|---|
$obj | objeto/string | nome do objeto/classe |
$method | corda | nome do método |
returns
o invocador do método (fechamento).
Obtém invocador de método privado ou protegido.
$ obj = new SomeClass ();
$ method = $ this -> getPrivateMethodInvoker (
$ obj , ' privateMethod '
);
$ this -> assertEquals (
' return value of the privateMethod() method ' , $ method ()
);
DebugHelper
Esta característica fornece funções auxiliares, dd()
e d()
para despejar variáveis.
Importe o trait KenjisPhpUnitHelperDebugHelper
para sua classe de teste:
<?php
declare (strict_types= 1 );
namespace Foo Bar Test Unit ;
use Kenjis PhpUnitHelper DebugHelper ;
use PHPUnit Framework ;
final class BazTest extends Framework TestCase
{
use DebugHelper;
}
Este pacote é licenciado usando a licença MIT.
Por favor, dê uma olhada em LICENSE
.