Skip to content

Offers a way to load mocked responses conditionally with Guzzle instead of a fixed queue in Laravel.

License

Notifications You must be signed in to change notification settings

WebWhales/laravel-guzzle-conditional-mock-handler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Conditional Mock Handler for Guzzle

This package offers an easy way to use the Conditional Mock Handler for Guzzle package while writing tests in a Laravel application. The Conditional Mock Handler can be used to load mocked responses conditionally based on the URL, instead of a fixed queue.

Installation

Install this package using composer:

composer require --dev webwhales/laravel-guzzle-conditional-mock-handler

Simple Example

To use the Conditional Mock Handler, you'll have to use the TestWithGuzzleMockHandler trait in your test. Furthermore, the Guzzle client has to instantiated by either the Laravel container or Laravel's dependency injection.

See the following example:

use Illuminate\Foundation\Testing\TestCase;
use WebWhales\LaravelGuzzleConditionalMockHandler\TestWithGuzzleMockHandler;

class ASimpleTest extends TestCase
{
    use TestWithGuzzleMockHandler;

    public function testSomething()
    {
        /**
         * @var \GuzzleHttp\Client $client
         */
        $client = $this->app->make(Client::class);

        // Add a mocked response
        $this->loadMockedResponseData('https://example.com', 'This is a test');

        // Get the response
        $response = $client->get('https://example.com');

		// Test the response content
        $this->assertEquals('This is a test', $response->getBody()->getContents());
    }

You can also use a Guzzle Response object (or any object implementing the \Psr\Http\Message\ResponseInterface interface), to give you more control about the response object itself:

// Add a mocked response
$this->loadMockedResponse('https://example.com', new Response(400, ['X-Test' => 'Test'], 'This is a test'));

// Get the response
$response = $client->get('https://example.com');

// Test the response content
$this->assertEquals(400, $response->getStatusCode());
$this->assertEquals('This is a test', $response->getBody()->getContents());

Regex example

The Conditional Mock Handler for Guzzle package also supports regex patterns:

// Add mocked responses
$this->loadMockedResponseData('^http(s)?://example\.', 'This is a test');

// Make a request to a matching URL
$response = $client->request('GET', 'https://example.com');

// Test the response content
$this->assertEquals('This is a test', $response->getBody()->getContents());


// Make a request to a non matching URL
// This will retrieve the actual content of https://www.example.com
$response = $client->request('GET', 'https://www.example.com');

// Test the response content
$this->assertNotEquals('This is a test', $response->getBody()->getContents());

License

The this package is open source software licensed under the MIT license

About

Offers a way to load mocked responses conditionally with Guzzle instead of a fixed queue in Laravel.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages