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
- Host: GitHub
- URL: https://github.com/ns3777k/hoverfly-php
- Owner: ns3777k
- License: mit
- Created: 2019-08-10T00:47:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-19T16:37:41.000Z (almost 3 years ago)
- Last Synced: 2025-03-07T15:18:11.277Z (11 months ago)
- Topics: hoverfly
- Language: PHP
- Homepage:
- Size: 55.7 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hoverfly PHP Client
[](https://travis-ci.org/ns3777k/hoverfly-php)
[](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']);
}
}
```