Fournit des traits d'assistance pour PHPUnit.
dd()
et d()
TestDouble
$this->getDouble()
$this->verifyInvoked()
$this->verifyInvokedOnce()
$this->verifyInvokedMultipleTimes()
$this->verifyNeverInvoked()
ReflectionHelper
$this->getPrivateProperty()
$this->setPrivateProperty()
$this->getPrivateMethodInvoker()
DebugHelper
Courir:
$ composer require --dev kenjis/phpunit-helper
TestDouble
Ce trait fournit des méthodes d'assistance pour créer des objets fictifs et vérifier les invocations.
Importez le trait KenjisPhpUnitHelperTestDouble
dans votre classe de test :
<?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()
paramètre | taper | description |
---|---|---|
$classname | chaîne | nom de classe |
$params | tableau | [nom_méthode => valeur_retour] |
[[method_name => [return_value1, return_value2 [, ...]]] | ||
$constructor_params | faux/tableau | false : désactiver le constructeur/tableau : paramètres du constructeur |
returns
(objet) un objet fictif PHPUnit.
Obtient l'objet fictif PHPUnit.
$ email = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' send ' ])
-> getMock ();
$ email -> method ( ' send ' )
-> willReturn ( true );
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ email = $ this -> getDouble (CI_Email::class, [ ' send ' => true ]);
Vous pouvez définir Closure comme valeur de retour d'une méthode simulée.
$ ret = function () {
throw new RuntimeException ( ' Cannot send email! ' );
};
$ mock = $ this -> getDouble (CI_Email::class, [ ' send ' => $ ret ]);
Vous pouvez également définir la simulation elle-même comme valeur de retour d'une méthode simulée en utilisant $this->returnSelf()
.
$ mock = $ this -> getDouble (CI_Email::class, [
' to ' => $ this -> returnSelf (),
' subject ' => $ this -> returnSelf (),
' send ' => true ,
]);
Vous pouvez créer des simulations avec des appels consécutifs.
$ mock = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' method ' ])
-> getMock ();
$ mock -> expects ( $ this -> any ())-> method ( ' method ' )
-> will ( $ this -> onConsecutiveCalls ( ' GET ' , ' POST ' , ' DELETE ' ));
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ mock = $ this -> getDouble (
CI_Input::class,
[
[ ' method ' => [ ' GET ' , ' POST ' , ' DELETE ' ]],
]
);
$this->verifyInvoked()
paramètre | taper | description |
---|---|---|
$mock | objet | Objet fictif PHPUnit |
$method | chaîne | nom de la méthode |
$params | tableau | arguments |
Vérifie qu'une méthode a été invoquée au moins une fois.
$ loader -> expects ( $ this -> atLeastOnce ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ this -> verifyInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedOnce()
paramètre | taper | description |
---|---|---|
$mock | objet | Objet fictif PHPUnit |
$method | chaîne | nom de la méthode |
$params | tableau | arguments |
Vérifie que la méthode n’a été invoquée qu’une seule fois.
$ loader -> expects ( $ this -> once ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ this -> verifyInvokedOnce (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedMultipleTimes()
paramètre | taper | description |
---|---|---|
$mock | objet | Objet fictif PHPUnit |
$method | chaîne | nom de la méthode |
$times | int | fois |
$params | tableau | arguments |
Vérifie que la méthode a été appelée exactement $fois fois.
$ loader -> expects ( $ this -> exactly ( 2 ))
-> method ( ' view ' )
-> withConsecutive (
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
);
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ this -> verifyInvokedMultipleTimes (
$ loader ,
' view ' ,
2 ,
[
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
]
);
$this->verifyNeverInvoked()
paramètre | taper | description |
---|---|---|
$mock | objet | Objet fictif PHPUnit |
$method | chaîne | nom de la méthode |
$params | tableau | arguments |
Vérifie que la méthode n’a pas été appelée.
$ loader -> expects ( $ this -> never ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Vous pouvez écrire le code ci-dessus comme ci-dessous :
$ this -> verifyNeverInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
ReflectionHelper
Ce trait fournit des méthodes d'assistance pour accéder aux propriétés et méthodes privées ou protégées.
Mais en général, il n'est pas recommandé de tester des propriétés ou des méthodes non publiques, alors réfléchissez-y à deux fois avant d'utiliser les méthodes de ce trait.
Importez le trait KenjisPhpUnitHelperReflectionHelper
dans votre classe de test :
<?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()
paramètre | taper | description |
---|---|---|
$obj | objet/chaîne | nom d'objet/classe |
$property | chaîne | nom de la propriété |
returns
la valeur de la propriété (mixte).
Obtient la valeur d’une propriété privée ou protégée.
$ obj = new SomeClass ();
$ private_propery = $ this -> getPrivateProperty (
$ obj ,
' privatePropery '
);
$this->setPrivateProperty()
paramètre | taper | description |
---|---|---|
$obj | objet/chaîne | nom d'objet/classe |
$property | chaîne | nom de la propriété |
$value | mixte | valeur |
Définit la valeur d’une propriété privée ou protégée.
$ obj = new SomeClass ();
$ this -> setPrivateProperty (
$ obj ,
' privatePropery ' ,
' new value '
);
$this->getPrivateMethodInvoker()
paramètre | taper | description |
---|---|---|
$obj | objet/chaîne | nom d'objet/classe |
$method | chaîne | nom de la méthode |
returns
l'invocateur de méthode (fermeture).
Obtient l'invocateur de méthode privée ou protégée.
$ obj = new SomeClass ();
$ method = $ this -> getPrivateMethodInvoker (
$ obj , ' privateMethod '
);
$ this -> assertEquals (
' return value of the privateMethod() method ' , $ method ()
);
DebugHelper
Ce trait fournit des fonctions d'assistance, dd()
et d()
pour vider les variables.
Importez le trait KenjisPhpUnitHelperDebugHelper
dans votre classe de test :
<?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;
}
Ce package est sous licence utilisant la licence MIT.
Veuillez consulter LICENSE
.