phpunit php vcr
v1.1.1
一个允许您在 PHPUnit 测试中轻松使用 PHP-VCR 库的库。
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 { . . . }
}