จัดเตรียมลักษณะผู้ช่วยสำหรับ 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 | อาร์เรย์ | [method_name => return_value] |
[[method_name => [return_value1, return_value2 [, ...]]] | ||
$constructor_params | เท็จ/อาร์เรย์ | เท็จ: ปิดการใช้งานตัวสร้าง / อาร์เรย์: พารามิเตอร์ตัวสร้าง |
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 ]);
คุณสามารถตั้งค่าการปิดเป็นค่าตอบแทนของวิธีการเยาะเย้ยได้
$ 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