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
。