jlaswell / vcr
A simple VCR-like HTTP recording and replay library for Guzzle
v0.1.2
2024-11-19 05:01 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.9
- symfony/yaml: ^7.1
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.4
This package is auto-updated.
Last update: 2024-11-29 16:53:40 UTC
README
A simple VCR-like HTTP recording and replay library for Guzzle.
Overview
This library allows you to record HTTP interactions and replay them during tests. It was built so that I could stop copy and pasting mock requests in test cases.
Installation
First, add the library to your project's dependencies by running:
composer require --dev jlaswell/vcr
Once the library is installed, you can start using it in your project. Here's a basic example of how to use it:
<?php namespace Jlaswell\Weather\Tests; use Jlaswell\VCR\VCR; use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; use Jlaswell\Weather\Client as WeatherClient; class ClientTest extends TestCase { // This will make a real request the first time and replay the request // on future calls. public function testCurrentWeather(): void { $cassette = VCR::insertCassette('weather-client'); $stack = HandlerStack::create(); $stack->push($cassette); $client = new Client(['handler' => $stack]); $weather = new WeatherClient($client) $conditions = $weather->forZipcode('20252'); $this->assertEquals('Sunny', $conditions->simpleDescription); $this->assertEquals('Sunny with a 30% chance of rain', $conditions->longDescription); } public function testAndRecordEveryTime(): void { $cassette = VCR::insertCassette('weather-client', Cassette::MODE_RECORD); $stack = HandlerStack::create(); $stack->push($cassette); // test logic } public function testAndOnlyReplayIfPresent(): void { $cassette = VCR::insertCassette('weather-client', Cassette::MODE_REPLAY); $stack = HandlerStack::create(); $stack->push($cassette); // test logic } }
For more advanced usage and configuration options, please refer to the documentation.