Coder Social home page Coder Social logo

mastermind1981 / pact-jvm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pact-foundation/pact-jvm

0.0 2.0 0.0 3.92 MB

JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

License: Apache License 2.0

Groovy 37.16% Java 41.02% Clojure 0.80% Scala 21.01%

pact-jvm's Introduction

pact-jvm

Join the chat at https://gitter.im/DiUS/pact-jvm

Build Status Appveyor build status Maven Central Maven Central

JVM implementation of the consumer driven contract library pact.

From the Ruby Pact website:

Define a pact between service consumers and providers, enabling "consumer driven contract" testing.

Pact provides an RSpec DSL for service consumers to define the HTTP requests they will make to a service provider and the HTTP responses they expect back. These expectations are used in the consumers specs to provide a mock service provider. The interactions are recorded, and played back in the service provider specs to ensure the service provider actually does provide the response the consumer expects.

This allows testing of both sides of an integration point using fast unit tests.

This gem is inspired by the concept of "Consumer driven contracts". See http://martinfowler.com/articles/consumerDrivenContracts.html for more information.

Read Getting started with Pact for more information on how to get going.

Contact

Links

Documentation

Additional documentation can be found at docs.pact.io, in the Pact Wiki, and in the Pact-JVM wiki.

Note about artifact names and versions

Pact-JVM is partially written in Scala. As Scala does not provide binary compatibility between major versions, all the Pact-JVM artifacts have the version of Scala they were built with in the artifact name. So, for example, the pact-jvm-consumer-junit module has a Jar file named pact-jvm-consumer_2.10. The full name of the file is pact-jvm-consumer_2.10-2.0.x.jar.

3.x branch Maven Central

3.x branch drops support for JDK 6 and 7 as well as Scala 2.10. It will be cross-compiled with Scala 2.12 when that is released, but is currently build against Scala 2.11. All Groovy code is compiled with Invoke Dynamic instruction turned on (indy version).

3.2.x/3.3.x versions implement the V2 pact spec, while the 3.5.x versions implement the V3 spec.

2.x branch Maven Central

2.x versions of pact support JDK 6 and Scala 2.10. We currently cross-compile all the artifacts against 2.10 and 2.11 versions of Scala, except for the SBT modules.

2.4.x versions implement the V2 pact spec, while the 2.5.x versions implement the V3 spec.

Service Consumers

Pact-JVM has a number of ways you can write your service consumer tests.

I Use Scala

You want to look at: scala-pact or pact-jvm-consumer-specs2

I Use Java

You want to look at: pact-jvm-consumer-junit

I Use Groovy or Grails

You want to look at: pact-jvm-consumer-groovy or pact-jvm-consumer-junit

(Use Clojure I)

Clojure can call out to Java, so have a look at pact-jvm-consumer-junit. For an example look at example_clojure_consumer_pact_test.clj.

I Use some other jvm language or test framework

You want to look at: Pact Consumer

My Consumer interacts with a Message Queue

As part of the V3 pact specification, we have defined a new pact file for interactions with message queues. For an implementation of a Groovy consumer test with a message pact, have a look at PactMessageBuilderSpec.groovy.

Service Providers

Once you have run your consumer tests, you will have generated some Pact files. You can then verify your service providers with these files.

I am writing a provider and want to ...

verify pacts with SBT

You want to look at: scala-pact or pact sbt plugin

verify pacts with Gradle

You want to look at: pact gradle plugin

verify pacts with Maven [version 2.1.9+]

You want to look at: pact maven plugin

For publishing pacts to a pact broker, have a look at https://github.com/warmuuh/pactbroker-maven-plugin

verify pacts with JUnit tests [version 2.3.3+, 3.1.3+]

You want to look at: junit provider support

verify pacts with Leiningen [version 2.2.14+, 3.0.3+]

You want to look at: pact leiningen plugin

verify pacts with Specs2

Have a look at writing specs to validate a provider

verify pacts with a Spring MVC project

Have a look at Spring MVC Pact Test Runner

I want to verify pacts but don't want to use sbt or gradle or leiningen

You want to look at: pact-jvm-provider

verify interactions with a message queue

As part of the V3 pact specification, we have defined a new pact file for interactions with message queues. The Gradle pact plugin supports a mechanism where you can verify V3 message pacts, have a look at pact gradle plugin.

I Use Ruby or Go or something else

The pact-jvm libraries are pure jvm technologies and do not have any native dependencies.

However if you have a ruby provider, the json produced by this library is compatible with the ruby pact library. You'll want to look at: Ruby Pact.

For .Net, there is Pact-net.

For Go, there is Pact-go.

Have a look at implementations in other languages.

I Use something completely different

There's a limit to how much we can help, however check out pact-jvm-server

How do I transport my pacts from consumers to providers?

You want to look at: Pact Broker

Which is a project that aims at providing tooling to coordinate pact generation and delivery between projects.

I want to contribute

Documentation for contributors is on the wiki.

pact-jvm's People

Contributors

abubics avatar alonpeer avatar awojcicki avatar bethesque avatar bobthemighty avatar fitzoh avatar flosell avatar georgepapas avatar gitter-badger avatar hbakkum avatar johnelf avatar kenbot avatar knok16 avatar lachatak avatar lordofthejars avatar nicknovitski avatar tanob avatar tdziurko avatar thetrav avatar tobivogel avatar treppo avatar venksub avatar wojciechbulaty avatar xuefengwu avatar

Watchers

 avatar  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.