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/配列 | false: コンストラクターを無効にする / 配列: コンストラクターのパラメーター |
(オブジェクト) PHPUnit モック オブジェクトreturns
。
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 | 配列 | 引数 |
メソッドが少なくとも 1 回呼び出されたことを検証します。
$ 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 | 配列 | 引数 |
メソッドが 1 回だけ呼び出されたことを検証します。
$ 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 | 配列 | 引数 |
メソッドが正確に $time 回呼び出されたことを検証します。
$ 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
をご覧ください。