Eine Bibliothek, die Ihnen die einfache Verwendung der PHP-VCR-Bibliothek in Ihren PHPUnit-Tests ermöglicht.
composer require --dev angelov/phpunit-php-vcr
Fügen Sie dann die Erweiterung zu Ihrer PHPUnit-Konfigurationsdatei hinzu.
(Alle Parameter sind optional.)
< 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 >
Die Bibliothek stellt ein UseCassette
Attribut bereit, das für Testklassen oder bestimmte Testmethoden deklariert werden kann. Das Attribut erwartet ein String-Argument – den Namen der Kassette.
Beim Ausführen der Tests schaltet die Bibliothek den Rekorder automatisch ein und aus und legt bei Bedarf die Kassetten ein.
Beispiele:
Wenn PHP-VCR für eine Klasse deklariert ist, fängt es die Anfragen in allen Testmethoden in dieser Klasse ab und speichert die Antworten in der angegebenen Kassette.
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 { . . . }
}
Bei der Deklaration für eine Testmethode werden nur Anfragen in dieser Methode abgefangen und in der angegebenen Kassette gespeichert. Beachten Sie, dass es für mehrere Testmethoden mit unterschiedlichen Kassetten deklariert werden kann.
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 { . . . }
}
Wenn es sowohl für die Klasse als auch für eine bestimmte Methode deklariert wird, wird der Name des für die Methode deklarierten Attributs für diese Methode verwendet. In diesem Beispiel werden die Antworten auf die in der Methode example()
gestellten Anfragen in example.yml
und die Antworten von recorded()
in example_2.yml
gespeichert.
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 { . . . }
}