Hoverfly Java

Java binding for Hoverfly
Alternatives To Hoverfly Java
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Stretch1,8375116 months ago17July 04, 201945mitRust
High performance flexbox implementation written in rust
Nut.js1,5535a month ago181June 01, 202227apache-2.0TypeScript
Native UI testing / controlling with node
Airplay1,0622637 months ago25August 04, 201528mitRuby
Airplay bindings to Ruby
Metascala1,030
6 years agoScala
A JVM written in Scala
Deepstream_python_apps975
4 months agootherJupyter Notebook
DeepStream SDK Python bindings and sample applications
Awesome Selenium828
9 months agocc0-1.0
A curated list of delightful Selenium resources.
Jest6824a month ago25May 08, 202224mitTypeScript
Super-fast alternative for babel-jest or ts-jest without type checking. Please use main repository for issues
Mmtk Core261117 hours ago2June 27, 2022202otherRust
Memory Management ToolKit
Modern Wasm Starter197
8 months ago26October 12, 20221unlicenseTypeScript
🛸 Run C++ code on web and create blazingly fast websites! A starter template to easily create WebAssembly packages using type-safe C++ bindings with automatic TypeScript declarations.
Webdriver Php185
7 years ago25PHP
PHP bindings for WebDriver (Selenium 2 API).
Alternatives To Hoverfly Java
Select To Compare


Alternative Project Comparisons
Readme

Hoverfly Java - Easy Creation of Stub Http Servers for Testing

CircleCI Read the Docs Codecov Known Vulnerabilities Maven Central

A Java native language binding for Hoverfly, a Go proxy which allows you to simulate http services in your unit tests. Another term for this is Service Virtualisation.

Features

  • Simulation of http/https services

  • Strict or loose http request matching based on URL, method, body and header combinations

  • Fluent and expressive DSL for easy generation of simulated services

  • Automatic marshalling of objects into JSON during request / response body generation

  • Create simulations by capturing live traffic

  • Hoverfly is a proxy, so you don’t need to alter the host that you make requests to

  • Multiple hosts / services per single instance of Hoverfly

  • Https automatically supported, no extra configuration required

  • Supports Mutual TLS authentication capture

  • Interoperable with standard Hoverfly JSON, making it easy to re-use data between Java and other native language bindings.

  • Use externally managed Hoverfly cluster for API simulations

  • Request verification

  • Response templating

  • Stateful capture / simulation

  • JUnit 5 extension

Documentation

Full documentation is available here

Maven Dependency

<dependency>
    <groupId>io.specto</groupId>
    <artifactId>hoverfly-java</artifactId>
    <version>0.14.0</version>
    <scope>test</scope>
</dependency>

Example

Create API simulation using capture mode

// Capture and output HTTP traffic to json file
@ClassRule
public static HoverflyRule hoverflyRule = HoverflyRule.inCaptureMode("simulation.json");


// After the capturing, switch to inSimulationMode to spin up a stub server
@ClassRule
public static HoverflyRule hoverflyRule = HoverflyRule.inSimulationMode(defaultPath("simulation.json"));

// Or you can use both approaches at once. If json file not present in capture mode, if present in simulation mode
@ClassRule
public static HoverflyRule hoverflyRule = HoverflyRule.inCaptureOrSimulationMode("simulation.json");

Create API simulation using DSL

@ClassRule
public static HoverflyRule hoverflyRule = HoverflyRule.inSimulationMode(dsl(
    service("www.my-test.com")
        .get("/api/bookings/1")
        .willReturn(created("http://localhost/api/bookings/1"))
));

@Test
public void shouldBeAbleToGetABookingUsingHoverfly() {
    // When
    final ResponseEntity<String> getBookingResponse = restTemplate.getForEntity("http://www.my-test.com/api/bookings/1", String.class);

    // Then
    assertEquals(bookFlightResponse.getStatusCode(), CREATED);
    assertEquals(bookFlightResponse.getHeaders().getLocation(), "http://localhost/api/bookings/1");
}

Some code examples for the DSL are available here.

More code examples for the DSL using request matchers can be found here.

Verify requests

// Verify that at least one request to a specific endpoint with any query params
hoverflyRule.verify(service(matches("*.flight.*")).get("/api/bookings").anyQueryParams(), atLeastOnce());

// Verify that an external service/dependency was not called
hoverflyRule.verifyZeroRequestTo(service(matches("*.flight.*")));

// Verify all the stubbed requests were made at least once
hoverflyRule.verifyAll();

Contributions

Contributions are welcome!

To submit a pull request you should fork the Hoverfly-Java repository, and make your change on a feature branch of your fork.

As of v0.10.2, hoverfly binaries are no longer stored in the repository. You should run ./gradlew clean test once to cache the binaries for development with your IDE.

If you have forked this project prior to v0.10.2, please re-fork to get a slimmer version of the repository.

Issues

Feel free to raise an issues on Github.

License

Apache License version 2.0.

(c) SpectoLabs 2020.

Popular Bindings Projects
Popular Testing Projects
Popular Libraries Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Java
Testing
Http
Proxy
Bindings
Https
Dsl
Mocking
Testing Tools
Stubbing