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 { . . . }
}