Предоставляет вспомогательные свойства для PHPUnit.
dd()
и d()
TestDouble
$this->getDouble()
$this->verifyInvoked()
$this->verifyInvokedOnce()
$this->verifyInvokedMultipleTimes()
$this->verifyNeverInvoked()
ReflectionHelper
$this->getPrivateProperty()
$this->setPrivateProperty()
$this->getPrivateMethodInvoker()
DebugHelper
Бегать:
$ composer require --dev kenjis/phpunit-helper
TestDouble
Эта черта предоставляет вспомогательные методы для создания фиктивных объектов и проверки вызовов.
Импортируйте черту KenjisPhpUnitHelperTestDouble
в свой тестовый класс:
<?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()
параметр | тип | описание |
---|---|---|
$classname | нить | имя класса |
$params | множество | [имя_метода => возвращаемое_значение] |
[[имя_метода => [возвращаемое_значение1, возвращаемое_значение2 [, ...]]] | ||
$constructor_params | ложь/массив | false: отключить конструктор/массив: параметры конструктора |
returns
(объект) макетный объект PHPUnit.
Получает макетный объект PHPUnit.
$ email = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' send ' ])
-> getMock ();
$ email -> method ( ' send ' )
-> willReturn ( true );
Вы можете написать код выше, как показано ниже:
$ email = $ this -> getDouble (CI_Email::class, [ ' send ' => true ]);
Вы можете установить Closure как возвращаемое значение имитируемого метода.
$ ret = function () {
throw new RuntimeException ( ' Cannot send email! ' );
};
$ mock = $ this -> getDouble (CI_Email::class, [ ' send ' => $ ret ]);
Вы также можете установить сам макет в качестве возвращаемого значения имитируемого метода, используя $this->returnSelf()
.
$ mock = $ this -> getDouble (CI_Email::class, [
' to ' => $ this -> returnSelf (),
' subject ' => $ this -> returnSelf (),
' send ' => true ,
]);
Вы можете создавать макеты с последовательными вызовами.
$ mock = $ this -> getMockBuilder (CI_Email::class)
-> disableOriginalConstructor ()
-> onlyMethods ([ ' method ' ])
-> getMock ();
$ mock -> expects ( $ this -> any ())-> method ( ' method ' )
-> will ( $ this -> onConsecutiveCalls ( ' GET ' , ' POST ' , ' DELETE ' ));
Вы можете написать код выше, как показано ниже:
$ mock = $ this -> getDouble (
CI_Input::class,
[
[ ' method ' => [ ' GET ' , ' POST ' , ' DELETE ' ]],
]
);
$this->verifyInvoked()
параметр | тип | описание |
---|---|---|
$mock | объект | Макетный объект PHPUnit |
$method | нить | имя метода |
$params | множество | аргументы |
Проверяет, что метод был вызван хотя бы один раз.
$ loader -> expects ( $ this -> atLeastOnce ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Вы можете написать код выше, как показано ниже:
$ this -> verifyInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedOnce()
параметр | тип | описание |
---|---|---|
$mock | объект | Макет-объект PHPUnit |
$method | нить | имя метода |
$params | множество | аргументы |
Проверяет, что метод был вызван только один раз.
$ loader -> expects ( $ this -> once ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Вы можете написать код выше, как показано ниже:
$ this -> verifyInvokedOnce (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
$this->verifyInvokedMultipleTimes()
параметр | тип | описание |
---|---|---|
$mock | объект | Макет-объект PHPUnit |
$method | нить | имя метода |
$times | интервал | раз |
$params | множество | аргументы |
Проверяет, что метод был вызван ровно $раз раз.
$ loader -> expects ( $ this -> exactly ( 2 ))
-> method ( ' view ' )
-> withConsecutive (
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
);
Вы можете написать код выше, как показано ниже:
$ this -> verifyInvokedMultipleTimes (
$ loader ,
' view ' ,
2 ,
[
[ ' shopConfirm ' , $ this -> anything (), true ],
[ ' shopTmplCheckout ' , $ this -> anything ()]
]
);
$this->verifyNeverInvoked()
параметр | тип | описание |
---|---|---|
$mock | объект | Макетный объект PHPUnit |
$method | нить | имя метода |
$params | множество | аргументы |
Проверяет, что метод не был вызван.
$ loader -> expects ( $ this -> never ())
-> method ( ' view ' )
-> with (
' shopConfirm ' , $ this -> anything (), true
);
Вы можете написать код выше, как показано ниже:
$ this -> verifyNeverInvoked (
$ loader ,
' view ' ,
[
' shopConfirm ' , $ this -> anything (), true
]
);
ReflectionHelper
Эта черта предоставляет вспомогательные методы для доступа к частным или защищенным свойствам и методам.
Но, как правило, не рекомендуется тестировать закрытые свойства или методы, поэтому подумайте дважды, прежде чем использовать методы в этом трейте.
Импортируйте черту KenjisPhpUnitHelperReflectionHelper
в свой тестовый класс:
<?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()
параметр | тип | описание |
---|---|---|
$obj | объект/строка | имя объекта/класса |
$property | нить | имя свойства |
returns
(смешанное) значение свойства.
Получает значение частной или защищенной собственности.
$ obj = new SomeClass ();
$ private_propery = $ this -> getPrivateProperty (
$ obj ,
' privatePropery '
);
$this->setPrivateProperty()
параметр | тип | описание |
---|---|---|
$obj | объект/строка | имя объекта/класса |
$property | нить | имя свойства |
$value | смешанный | ценить |
Устанавливает значение частной или защищенной собственности.
$ obj = new SomeClass ();
$ this -> setPrivateProperty (
$ obj ,
' privatePropery ' ,
' new value '
);
$this->getPrivateMethodInvoker()
параметр | тип | описание |
---|---|---|
$obj | объект/строка | имя объекта/класса |
$method | нить | имя метода |
returns
(замыкание) вызывающий метод.
Получает частный или защищенный метод, вызывающий метод.
$ obj = new SomeClass ();
$ method = $ this -> getPrivateMethodInvoker (
$ obj , ' privateMethod '
);
$ this -> assertEquals (
' return value of the privateMethod() method ' , $ method ()
);
DebugHelper
Эта черта предоставляет вспомогательные функции dd()
и d()
для дампа переменных.
Импортируйте черту KenjisPhpUnitHelperDebugHelper
в свой тестовый класс:
<?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;
}
Этот пакет лицензируется с использованием лицензии MIT.
Пожалуйста, обратите внимание на LICENSE
.