Pustaka yang memungkinkan Anda menggunakan pustaka PHP-VCR dengan mudah dalam pengujian PHPUnit Anda.
composer require --dev angelov/phpunit-php-vcr
Kemudian, tambahkan ekstensi ke file konfigurasi PHPUnit Anda.
(Semua parameter bersifat opsional.)
< 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 >
Pustaka menyediakan atribut UseCassette
yang dapat dideklarasikan pada kelas pengujian atau metode pengujian tertentu. Atribut tersebut mengharapkan satu argumen string - nama kaset.
Saat menjalankan pengujian, perpustakaan akan secara otomatis menghidupkan dan mematikan perekam, dan memasukkan kaset bila diperlukan.
Contoh:
Saat dideklarasikan pada suatu kelas, PHP-VCR akan mencegat permintaan di semua metode pengujian di kelas tersebut, dan akan menyimpan tanggapannya dalam kaset yang diberikan.
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 { . . . }
}
Ketika dideklarasikan pada metode pengujian, hanya permintaan dalam metode tersebut yang akan disadap dan disimpan dalam kaset yang diberikan. Perhatikan bahwa ini dapat dideklarasikan pada beberapa metode pengujian dengan kaset berbeda.
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 { . . . }
}
Ketika dideklarasikan pada kelas dan metode tertentu, nama dari atribut yang dideklarasikan pada metode tersebut akan digunakan untuk metode tersebut. Dalam contoh ini, respons dari permintaan yang dibuat dalam metode example()
akan disimpan di example.yml
dan respons dari recorded()
di 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 { . . . }
}