An open API service indexing awesome lists of open source software.

https://github.com/ns3777k/hoverfly-php

PHP Client for hoverfly
https://github.com/ns3777k/hoverfly-php

hoverfly

Last synced: 11 months ago
JSON representation

PHP Client for hoverfly

Awesome Lists containing this project

README

          

# Hoverfly PHP Client

[![Build Status](https://travis-ci.org/ns3777k/hoverfly-php.svg?branch=master)](https://travis-ci.org/ns3777k/hoverfly-php)
[![codecov](https://codecov.io/gh/ns3777k/hoverfly-php/branch/master/graph/badge.svg)](https://codecov.io/gh/ns3777k/hoverfly-php)

PHP Client for [hoverfly](https://hoverfly.io/) based on [java version](https://github.com/SpectoLabs/hoverfly-java).

## 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

```shell script
$ 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
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']);
}
}
```