Una biblioteca que le permite utilizar fácilmente la biblioteca PHP-VCR en sus pruebas PHPUnit.
composer require --dev angelov/phpunit-php-vcr
Luego, agregue la extensión a su archivo de configuración PHPUnit.
(Todos los parámetros son opcionales).
< 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 >
La biblioteca proporciona un atributo UseCassette
que se puede declarar en clases de prueba o métodos de prueba específicos. El atributo espera un argumento de cadena: el nombre del casete.
Al ejecutar las pruebas, la biblioteca encenderá y apagará automáticamente la grabadora e insertará los casetes cuando sea necesario.
Ejemplos:
Cuando se declara en una clase, PHP-VCR interceptará las solicitudes en todos los métodos de prueba de esa clase y almacenará las respuestas en el casete dado.
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 { . . . }
}
Cuando se declara en un método de prueba, solo las solicitudes de ese método serán interceptadas y almacenadas en el casete dado. Tenga en cuenta que se puede declarar en múltiples métodos de prueba con diferentes casetes.
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 { . . . }
}
Cuando se declara tanto en la clase como en un método específico, el nombre del atributo declarado en el método se utilizará para ese método. En este ejemplo, las respuestas de las solicitudes realizadas en el método example()
se almacenarán en example.yml
y las de recorded()
en 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 { . . . }
}