Une bibliothèque qui vous permet d'utiliser facilement la bibliothèque PHP-VCR dans vos tests PHPUnit.
composer require --dev angelov/phpunit-php-vcr
Ensuite, ajoutez l'extension à votre fichier de configuration PHPUnit.
(Tous les paramètres sont facultatifs.)
< 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 bibliothèque fournit un attribut UseCassette
qui peut être déclaré sur des classes de test ou des méthodes de test spécifiques. L'attribut attend un argument de chaîne : le nom de la cassette.
Lors de l'exécution des tests, la bibliothèque allumera et éteindra automatiquement l'enregistreur et insérera les cassettes si nécessaire.
Exemples :
Lorsqu'il est déclaré sur une classe, PHP-VCR interceptera les requêtes dans toutes les méthodes de test de cette classe et stockera les réponses dans la cassette donnée.
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 { . . . }
}
Lorsqu'elles sont déclarées sur une méthode de test, seules les requêtes dans cette méthode seront interceptées et stockées dans la cassette donnée. A noter qu'il peut être déclaré sur plusieurs méthodes de test avec des cassettes différentes.
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 { . . . }
}
Lorsqu'il est déclaré à la fois sur la classe et sur une méthode spécifique, le nom de l'attribut déclaré sur la méthode sera utilisé pour cette méthode. Dans cet exemple, les réponses aux requêtes faites dans la méthode example()
seront stockées dans example.yml
et celles de recorded()
dans 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 { . . . }
}