Giter Site home page Giter Site logo

hoverfly-php's Introduction

Hoverfly PHP Client

Build Status codecov

PHP Client for hoverfly based on java version.

Why I would use it for?

Consider having a functional test that sends a request to the application. While handling the request application can use multiple external services like forecast, billing or booking system. We don't wanna test external services because they are not stable, require an internet connection, can limit request rate per second and add delay. During the test we just want something to respond to our requests according to the specification, it does not have to be a real service and that's where hoverfly and this client come in.

Installation

$ composer require --dev ns3777k/hoverfly

Example

Your tests have to be configured to use hoverfly proxy server (use HTTP_PROXY) and ignore proxy for itself (use NO_PROXY).

<?php

require_once __DIR__ . '/vendor/autoload.php';

use Hoverfly\Client;
use Hoverfly\Model\Response;

class SomeTest
{
    private $hoverfly;

    public function __construct()
    {
        $this->hoverfly = new Client(['base_uri' => getenv('HOVERFLY_URL')]);
    }

    public function _before()
    {
        $this->hoverfly->deleteJournal();
        $this->hoverfly->deleteSimulation();
    }

    public function testFeature(ApiTester $I)
    {
        $this->hoverfly->simulate(
            $this->hoverfly->buildSimulation()
                ->serviceExact('test.ru')
                ->getExact('/test')
                ->withState('customer', 'individual')
                ->willReturn(
                    Response::json(['test' => true])
                        ->setDelay(3000)
                        ->addTransitionsState('step', 'order')
                        ->addTransitionsState('customer', 'individual')
                        ->addRemovesState('basket')
                )
        );

        $I->sendPOST('/api/v1/faq/9999999/dislike', ['comment' => 'test']);
    }
}

hoverfly-php's People

Contributors

ns3777k avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.