Skip to content

bbyars/grunt-mountebank

Repository files navigation

grunt-mountebank

Greenkeeper badge

mountebank lifecycle management for grunt

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-mountebank --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-mountebank');

Grunt Configuration

In your project's Gruntfile, add a section named mb to the data object passed into grunt.initConfig().

grunt.initConfig({
  mb: {
    options: {
      path: 'node_modules/.bin/mb',
      pathEnvironmentVariable: 'MB_EXECUTABLE',
      showLogs: true
    },
    start: ['--port', 2525, '--allowInjection', '--mock', '--debug', '--pidfile', 'mb-grunt.pid'],
    restart: ['--port', 2525, '--allowInjection', '--mock', '--debug', '--pidfile', 'mb-grunt.pid'],
    stop: ['--pidfile', 'mb-grunt.pid']
  },
});

If you leave off the options, the plugin assumes the path to mb is simply mb (as it is if you npm install -g mountebank). The pathEnvironmentVariable allows dynamic substitution of the path to support niche cases where you won't know the path until other tasks run (the mountebank build uses this to test various packaging options). You probably won't need it, but if both path and pathEnvironmentVariable are set, pathEnvironmentVariable takes precedence.

Leave showLogs off or set it to false to prevent piping the mountebank logs to the console.

The start, stop, and restart target arrays define the command line arguments passed to each of those commands.

Because you likely want to guarantee that you stop mountebank even if tests that depend on it fail, this plugin also adds a try, finally, and checkForErrors task. An example test run might look something like this:

grunt.registerTask('test', ['mb:start', 'try', 'mochaTest', 'finally', 'mb:stop', 'checkForErrors']);

The try task collects failures but instructs grunt to continue to the next task. The finally task restores the fail-on-error behavior and helps guarantee that the next task runs. checkForErrors inspects the failures collected during the try section and fails the build if necessary.

mountebank Initialization

As of mountebank v1.4.3, this task guarantees that mb is fully initialized before returning. Prior to mountebank v1.4.3, you may have to add a small delay in the next task if it expects mb to be initialized. This is particularly true if you use the --configfile options.