node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »


Node Provider for Pact

Matches pact for Providers. See Pacts for more information on Pact.



  • You will need Ruby 2+. You can install this via ruby-install, rvm or chruby.
  • bundler
  • node (tested on version 4.2.1)
  • npm

Install bundler with:

gem install bundler
bundle --version

Should print something like:

Bundler version 1.11.2

Any project using Pact will then on preinstall run 'bundle install' to install the ruby dependencies.

Using pact-js-provider

See test repo

provider_states_for('Animal Service', 'Zoo App', './pacts/zoo_app-animal_service.json', 'http://localhost:5000', (done) => {
  providerState('there is an alligator named Mary', (done) => {
    setUp( (done) => {
      switchMary(true, done)
    it( () => {})
    tearDown( (done) => {

Pact-js-provider uses mocha under the hood. As a result currently to run the test you need an it method. The provider_states_for method needs the following parameters:

  • provider name
  • consumer name
  • pact file
  • base url

The providerState requires the name of the providerState to be tested. Currently this will just output the content from the ruby implementation. There is no error code returned on failure.


Pacts - ruby reference implementation

[Pacts js consumer] (

Simplifying microservices testing with pacts - Ron Holshausen (one of the original pact authors)

Pact specification

Integrated tests are a scam - J.B. Rainsberger

Consumer Driven Contracts - Ian Robinson

Integration Contract Tests - Martin Fowler