Over the wire test doubles
Clone or download
Latest commit ddbe4f3 Aug 27, 2018
Permalink
Failed to load latest commit information.
.circleci Workaround to export MB_PUBLISH in CircleCI Aug 27, 2018
bin Fixing mb stop on Windows to remove pidfile without signals Jun 29, 2018
functionalTest Rolling back changes; broke web tests Jul 3, 2018
images Added instructions for configuring intellij Mar 9, 2017
performanceTest Fixing performance tests Jun 28, 2018
scripts Using eslint:recommended to keep up with new rules Jun 22, 2018
src Updated https certificate advice Aug 24, 2018
tasks Bumping version Aug 27, 2018
test Fix case-sensitivity issue with matches predicates and jsonpath Jun 27, 2018
.codeclimate.yml Fixing crawler for proto agnostic links Feb 18, 2018
.editorconfig Adding editorconfig Nov 16, 2015
.eslintignore Added ESLint, fixed all violations Nov 16, 2015
.eslintrc Removed deprecated ESLint feature Jun 26, 2018
.gitattributes Adding to support line endings for Windows development May 10, 2014
.gitignore Removing unused files Jun 27, 2018
.istanbul.yml Troubleshooting coveralls issues Mar 2, 2017
.jsdoc Wiring up jsdoc Nov 9, 2015
.mdlrc Fix markdown linting issues Mar 8, 2017
.npmignore Minor project cleanup Aug 10, 2015
.ruby-version Updated ruby dependency version Nov 9, 2016
.travis.yml Fixing Travis deploy and heroku/npm deploy Jun 20, 2018
CODE_OF_CONDUCT.md Adding code of conduct from http://contributor-covenant.org/ Mar 8, 2017
CONTRIBUTING.md Contributing updates Jun 27, 2018
Gemfile Adding mime-types to get dpl S3 upload to work on OSX Nov 8, 2016
Gemfile.lock Revert "Updating gem versions" Jun 25, 2018
Gruntfile.js Attempting to add back in zipfile tests for Windows Jul 4, 2018
ISSUE_TEMPLATE.md Fixing issue template Apr 21, 2016
LICENSE Moving brochure-ware to site Dec 3, 2013
Procfile Added analytics for heroku only; not added on local runs Dec 8, 2013
README.md Removing system daemon from README; it is on install page Jun 29, 2018
appveyor.yml Accepting Windows hack for now to allow further progress Aug 20, 2018
build Passing pubilsh flag to deploy job Aug 26, 2018
build.bat Attempting to add back in zipfile tests for Windows Jul 4, 2018
firebase.json Upgraded mountebank firebase project from firebase.com to new console May 20, 2017
package-lock.json Escape logs in HTML view Aug 21, 2018
package.json Bumping version Aug 27, 2018
releases.json Workaround to export MB_PUBLISH in CircleCI Aug 27, 2018

README.md

Welcome, friend

mountebank is the only open source service virtualization tool that competes with the commercial offerings in terms of protocol diversity, capability, and performance. Here's what Capital One wrote about their mobile cloud migration (emphasis theirs):

In fact, halfway through we discovered our corporate mocking software couldn’t handle the sheer amount of performance testing we were running as part of this effort (we completely crushed some pretty industrial enterprise software in the process). As a result, we made the call to move the entire program over to a Mountebank OSS-based solution with a custom provision to give us the ability to expand/shrink our mocking needs on demand.

mountebank is the first open source tool to provide cross-platform, multi-protocol test doubles over the wire. Just point your application to mountebank instead of the real dependency, and test like you would with traditional stubs and mocks.

At the moment, the following protocols are supported:

  • http
  • https
  • tcp (text and binary)
  • smtp

mountebank supports mock verification, stubbing with advanced predicates, JavaScript injection, and record-playback through proxying.

how it works

See getting started guide for more information.

Install and Run

npm

Install:

npm install -g mountebank

Billions of other install options are also available with no platform dependencies.

Run:

mb

There are a number of command line options if you need to customize mountebank.

Learn More

After installing and running, view the docs in your browser at http://localhost:2525, or visit the public site.

You can always learn more and support mountebank development by buying the book:

Testing Microservices with Mountebank

Goals

mountebank has the following goals:

  • Trivial to get started
    • mountebank is easy to install, without any platform dependencies. mountebank aims for fun and comprehensive documentation with lots of examples, and a nice UI that lets you explore the API interactively.
  • A platform, not just a tool
    • mountebank aims to be fully cross-platform, with native language bindings. Servers are extensible through scripting.
  • Powerful
    • mountebank is the only open source stubbing tool that is non-modal and multi-protocol. Commercial "service virtualization" solutions exist, but their licensed platforms make it hard to move the tests closer to development and can even require a specialized IDE. mountebank provides service virtualization free of charge without any platform constraints.

Not all of mountebank's goals are currently implemented, but fear not, for he has a team of top-notch open source developers, and they are legion.

Roadmap and Support

mountebank is used by a large number of companies and I think it's important to convey my best guess as to what the feature roadmap is. I've adopted GitHub tools to manage the roadmap. Specifically, the Roadmap project page shows the features by release. I generally re-prioritize and update the ETAs each release. I'm in the middle of writing the mountebank book at the moment too, so please be patient.

Visit the Google group for any support questions. Don't be shy!

mountebank is provided free of charge and maintained in my free time. As such, I'm unable to make any kind of guarantees around either support turn-around time or release dates. If your company has commitments that require more confidence and are willing to pay a reasonable services fee to obtain that confidence, you can contact me directly at brandon.byars@gmail.com.

Build Status

CircleCI Greenkeeper badge Test Coverage Codacy Badge Code Climate

For cross-OS compatibility, mountebank uses TravisCI, Appveyor, and CircleCI. Only CircleCI runs on commit (TravisCI and Appveyor are triggered in the CircleCI pipeline), and you can view the success of the TravisCI and Appveyor builds in CircleCI as the "osx" and "windows" jobs, respectively.

Building

./build should do the trick on Mac and Linux, and build.bat on Windows, assuming you have at least node 4.0. If not, yell at me.

There are some tests that require network access (grunt airplane ignores them in case that offends your moral sensibilities). A few of these tests verify the correct behavior under DNS failures. If your ISP is kind enough to hijack the NXDOMAIN DNS response in an attempt to allow you to conveniently peruse their advertising page, those tests will fail. I suggest that, under such circumstances, you talk to your ISP and let them know that their policies are causing mountebank tests to fail. You can also run grunt airplane, which will avoid tests requiring your DNS resolver.

Contributing

Contributions are welcome! Some tips for contributing are in the contributing link that spins up when you run mb. I have a liberal policy accepting pull requests - I'd rather you sent them even if you can't figure out how to get the build working, etc. I'm also available via Skype or something similar to help you get started. Feel free to reach me at brandon.byars@gmail.com.