blastcloud / hybrid
Charge up your app or SDK with a testing library specifically for Symfony/HttpClient
Installs: 5 877
Dependents: 0
Suggesters: 0
Security: 0
Stars: 43
Watchers: 5
Forks: 0
Open Issues: 1
Requires
- php: >=8.1
- ext-json: *
- blastcloud/chassis: ^1.0.6
- phpunit/phpunit: >=9.6
- symfony/http-client: >=6.0
Requires (Dev)
- symfony/mime: ^4.3
README
Full Documentation at hybrid.guzzler.dev
Charge up your app or SDK with a testing library specifically for Symfony/HttpClient.
Installation
composer require --dev --prefer-dist blastcloud/hybrid
Example Usage
<?php use BlastCloud\Hybrid\{Expectation, UsesHybrid}; use Symfony\Component\HttpClient\Response\MockResponse; use PHPUnit\Framework\TestCase; class SomeTest extends TestCase { use UsesHybrid; public $classToTest; public function setUp(): void { parent::setUp(); $client = $this->hybrid->getClient([ /* Any configs for a client */ "base_uri" => "https://example.com/api" ]); // You can then inject this client object into your code or IOC container. $this->classToTest = new ClassToTest($client); } public function testSomethingWithExpectations() { $this->hybrid->expects($this->once()) ->post("/some-url") ->withHeader("X-Authorization", "some-key") ->willRespond(new MockResponse("Some body")); $this->classToTest->someMethod(); } public function testSomethingWithAssertions() { $this->hybrid->queueResponse( new MockResponse(null, ['http_code' => 204]), new \Exception("Some message"), // any needed responses to return from the client. ); $this->classToTest->someMethod(); // ... Some other number of calls $this->hybrid->assertAll(function (Expectation $expect) { return $expect->withHeader("Authorization", "some-key"); }); } }
Documentation
License
Hybrid is open-source software licensed under the MIT License.