Over the wire test doubles
HTML JavaScript Other
Permalink
Failed to load latest commit information.
bin Allow nested stringify functions Jan 1, 2017
functionalTest Added missing test files Jan 1, 2017
performanceTest Removing only call Nov 10, 2016
scripts Removing remaining remnants of node v0 support Dec 6, 2016
src Corrected spelling of Stephen's name (sorry!) Jan 10, 2017
tasks Fixed gitignore problem preventing new docs from getting committed Dec 8, 2016
test Fixed flaky test Dec 29, 2016
.bithoundrc Trying to get bithound to recognize eslint Apr 11, 2016
.editorconfig Adding editorconfig Nov 16, 2015
.eslintignore Added ESLint, fixed all violations Nov 16, 2015
.eslintrc Fixed new linting rules Mar 11, 2016
.gitattributes Adding to support line endings for Windows development May 10, 2014
.gitignore Fixed gitignore problem preventing new docs from getting committed Dec 8, 2016
.jsdoc Wiring up jsdoc Nov 9, 2015
.npmignore Minor project cleanup Aug 10, 2015
.ruby-version Updated ruby dependency version Nov 9, 2016
.travis.yml Updating to node 6.9 as base image for OS packages Nov 9, 2016
CONTRIBUTING.md Added docs to explain protocol-agnostic nature of most code Dec 27, 2016
Gemfile Adding mime-types to get dpl S3 upload to work on OSX Nov 8, 2016
Gemfile.lock Updating dependency versions Dec 29, 2016
Gruntfile.js Moving shonkwrap out of CI tasks to prevent unnecessary failures Dec 9, 2016
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 Fixed README reference to required node version Dec 5, 2016
ReleaseChecklist.md Changed to use sitemap so it doesn't have to change with each new page Oct 25, 2015
appveyor.yml Updating to node 6.9 as base image for OS packages Nov 9, 2016
build Removing support for nodes 0.10, 0.12 Nov 15, 2016
build-pipeline.xlsx Updated ruby dependency version Nov 9, 2016
build.bat Removing remaining remnants of node v0 support Dec 6, 2016
firebase.json Fix linting issue Nov 13, 2015
npm-shrinkwrap.json Removing repo references so mountebank can sit behind repo manager Dec 8, 2016
package.json Corrected spelling of Stephen's name (sorry!) Jan 10, 2017
releases.json Prepping v1.8.0 release Jan 3, 2017

README.md

mountebank

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

Learn More

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

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.

Support

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

Build Status

Coverage Status Codacy Badge

Node Version Ubuntu 12.04 CentOS 6.7 OS X Mavericks Windows Server 2012
npm v7.1 Build Status (not tested) Build Status Build status
npm v6.9 (LTS) Build Status (not tested) Build Status Build status
npm v4.4 Build Status (not tested) Build Status Build status
OS package v6.9 Build Status Build Status Build Status N/A
Self-contained archive v6.9 Build Status (not tested) Build Status Build status
(Performance) v6.9 Build Status (not tested) (not tested) (not tested)

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.