يوفر سمات مساعد لـ 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 | صفيف | الحجج |
التحقق من أن هذه الطريقة تم استدعاؤها بالضبط مرات $ مرات.
$ 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
.