php vcr
1.8.0
這是 VCR Ruby 函式庫到 PHP 的移植。
記錄測試套件的 HTTP 交互,並在未來的測試運行期間重播它們,以實現快速、確定性、準確的測試。可以在 php-vcr 網站上找到一些文件。
免責聲明:在 PHP 中執行此操作並不像在支援猴子修補的程式語言中那麼容易(我正在看著你,Ruby)
$http_response_header
,請參閱#96)VCRVCR::turnOn();
在你的tests/bootstrap.php
VCRVCR::turnOn();
在你的tests/bootstrap.php
使用靜態方法調用:
class VCRTest extends TestCase
{
public function testShouldInterceptStreamWrapper ()
{
// After turning on the VCR will intercept all requests
VCR VCR :: turnOn ();
// Record requests and responses in cassette file 'example'
VCR VCR :: insertCassette ( ' example ' );
// Following request will be recorded once and replayed in future test runs
$ result = file_get_contents ( ' http://example.com ' );
$ this -> assertNotEmpty ( $ result );
// To stop recording requests, eject the cassette
VCR VCR :: eject ();
// Turn off VCR to stop intercepting requests
VCR VCR :: turnOff ();
}
public function testShouldThrowExceptionIfNoCasettePresent ()
{
$ this -> setExpectedException (
' BadMethodCallException ' ,
" Invalid http request. No cassette inserted. Please make sure to insert "
. " a cassette in your unit test using VCR::insertCassette('name'); "
);
VCR VCR :: turnOn ();
// If there is no cassette inserted, a request throws an exception
file_get_contents ( ' http://example.com ' );
}
}
您可以透過使用 phpunit-testlistener-vcr 在 PHPUnit 中使用註解:
class VCRTest extends TestCase
{
/**
* @vcr unittest_annotation_test
*/
public function testInterceptsWithAnnotations ()
{
// Requests are intercepted and stored into tests/fixtures/unittest_annotation_test.
$ result = file_get_contents ( ' http://google.com ' );
$ this -> assertEquals ( ' This is a annotation test dummy. ' , $ result , ' Call was not intercepted (using annotations). ' );
// VCR is automatically turned on and off.
}
}
只需執行以下命令:
$ composer require --dev php-vcr/php-vcr
PHP-VCR 取決於:
Composer 安裝除curl 等擴充功能之外的所有依賴項。
為了執行所有測試,您需要使用 Composer 取得開發依賴項:
composer install
composer test
變更日誌已移至 PHP-VCR 發布頁面。
舊的變更日誌條目
版權所有 (c) 2013-2023 阿德里安菲利普。根據 MIT 授權條款發布。有關詳細信息,請參閱許可證。貢獻者