phpunit helper
v1.1.2
为 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
(object) 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 | 大批 | 论点 |
验证该方法被准确调用 $times 次。
$ 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
。