mountebank lifecycle management for grunt
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');
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.
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.