Библиотека, которая позволяет вам легко использовать библиотеку 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 { . . . }
}