مكتبة تتيح لك استخدام مكتبة PHP-VCR بسهولة في اختبارات PHPUnit الخاصة بك.
composer require --dev angelov/phpunit-php-vcr
ثم قم بإضافة الامتداد إلى ملف تكوين PHPUnit الخاص بك.
(جميع المعلمات اختيارية.)
< extensions >
< bootstrap class = " AngelovPHPUnitPHPVcrExtension " >
< parameter name = " cassettesPath " value = " tests/fixtures " />
< parameter name = " storage " value = " yaml " /> <!-- https://php-vcr.github.io/documentation/configuration/#storage -->
< parameter name = " libraryHooks " value = " stream_wrapper, curl, soap " /> <!-- https://php-vcr.github.io/documentation/configuration/#library-hooks -->
< parameter name = " requestMatchers " value = " method, url, query_string, ... " /> <!-- https://php-vcr.github.io/documentation/configuration/#request-matching -->
< parameter name = " whitelistedPaths " value = " " /> <!-- https://php-vcr.github.io/documentation/configuration/#white--and-blacklisting-paths -->
< parameter name = " blacklistedPaths " value = " " /> <!-- https://php-vcr.github.io/documentation/configuration/#white--and-blacklisting-paths -->
< parameter name = " mode " value = " new_episodes " /> <!-- https://php-vcr.github.io/documentation/configuration/#record-modes -->
</ bootstrap >
</ extensions >
توفر المكتبة خاصية UseCassette
التي يمكن الإعلان عنها في فئات الاختبار أو طرق اختبار محددة. تتوقع السمة وسيطة سلسلة واحدة - اسم الكاسيت.
عند إجراء الاختبارات، ستقوم المكتبة تلقائيًا بتشغيل وإيقاف المُسجل، وإدراج الأشرطة عند الحاجة.
أمثلة:
عند الإعلان عنه في فئة ما، سيعترض PHP-VCR الطلبات في جميع طرق الاختبار في تلك الفئة، وسيخزن الاستجابات في الكاسيت المحدد.
use Angelov PHPUnitPHPVcr UseCassette ;
use PHPUnit Framework Attributes Test ;
use PHPUnit Framework TestCase ;
#[UseCassette( " example_cassette.yml " )]
class ExampleTest extends TestCase
{
#[Test]
public function example (): void { . . . }
#[Test]
public function another (): void { . . . }
}
عند الإعلان عن طريقة اختبار، سيتم اعتراض الطلبات الواردة في تلك الطرق فقط وتخزينها في الدرج المحدد. لاحظ أنه يمكن الإعلان عنها بطرق اختبار متعددة بأشرطة مختلفة.
use Angelov PHPUnitPHPVcr UseCassette ;
use PHPUnit Framework Attributes Test ;
use PHPUnit Framework TestCase ;
class ExampleTest extends TestCase
{
#[Test]
#[UseCassette( " example.yml " )]
public function example (): void { . . . }
#[Test]
public function another (): void { . . . }
#[Test]
#[UseCassette( " example_2.yml " )]
public function recorded (): void { . . . }
}
عند التصريح عنها في كل من الفئة وطريقة معينة، سيتم استخدام الاسم من السمة المعلنة في الطريقة لهذه الطريقة. في هذا المثال، سيتم تخزين الاستجابات من الطلبات التي تم إجراؤها في الأسلوب example()
في example.yml
وتلك التي recorded()
في example_2.yml
.
use Angelov PHPUnitPHPVcr UseCassette ;
use PHPUnit Framework Attributes Test ;
use PHPUnit Framework TestCase ;
#[UseCassette( " example.yml " )]
class ExampleTest extends TestCase
{
#[Test]
public function example (): void { . . . }
#[Test]
#[UseCassette( " example_2.yml " )]
public function recorded (): void { . . . }
}