avto-dev/guzzle-url-mock

URLs (fixed and regexps-based) mock handler for Guzzle 6/7

v1.6.0 2023-08-09 13:36 UTC

README

logo

Guzzle URLs mock handler

Version Version Build Status Coverage Downloads count License

This package for easy mocking URLs (fixed and regexps-based) using Guzzle 6/Guzzle 7.

Install

Require this package with composer using the following command:

$ composer require avto-dev/guzzle-url-mock "^1.5"

Installed composer is required (how to install composer).

You need to fix the major version of package.

Usage

Create Guzzle client instance with passing handler instance, setup it, and make request:

<?php

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response;
use AvtoDev\GuzzleUrlMock\UrlsMockHandler;

$handler = new UrlsMockHandler;
$client  = new Client([
    'handler' => HandlerStack::create($handler),
]);

$handler->onUriRequested('https://goo.gl', 'get', new Response(
    200, ['foo' => ['bar']], '<h1>All looks fine!</h1>'
));

$handler->onUriRegexpRequested('~https:\/\/goo\.gl\/.*~', 'post', new Response(
    404, [], 'Nothing found'
));

$client->request('get', 'https://goo.gl')->getBody()->getContents(); // '<h1>All looks fine!</h1>'
$client->request('post', 'https://goo.gl/foo', ['http_errors' => false])->getBody()->getContents(); // 'Nothing found'

Also you can use next handler methods:

Method name Description
getRequestsUriHistory() Get all requests URIs history
getLastRequestedUri() Get last requested URI
getLastRequest() Get last request instance
getLastOptions() Get last request options

Testing

For package testing we use phpunit framework and docker-ce + docker-compose as develop environment. So, just write into your terminal after repository cloning:

$ make build
$ make latest # or 'make lowest'
$ make test

Changes log

Release date Commits since latest release

Changes log can be found here.

Support

Issues Issues

If you will find any package errors, please, make an issue in current repository.

License

This is open-sourced software licensed under the MIT License.