mockify
Allows you to mock browserify modules for unit tests. If you transform your unit tests with browserify, you may need to mock certain modules (this helps with code coverage too).
Installation
npm install browserify-mockify
Usage
Browserify
In your browserify task, add
var mockify = require('browserify-mockify');
var b = browserify();
b.transform(mockify.transform());
If you have any other transforms, pass each transform you use as arguments into mockify.transform
. For example, if you were to use reactify -
b.transform(reactify);
b.transform(mockify.transform(reactify));
Your Test Code
Registering mocks
Using mockify.mock
allows you to mock the modules you need. The first parameter should be the path relative to the module you are going to require (it should match the require path in the required module).
The second parameter can be whatever - this is what is returned instead of the actual module.
mockify.mock('./moduleB', {
hello: function () {
}
});
Requiring modules
Replace any require calls that contains modules that you want to mock with mockify
calls instead.
For example,
var module = require('./module');
Would become
var module = mockify('./module');
The required module
Your module.js file should look like
var moduleB = require('./moduleB');
When you run this normally in browserify, you will get moduleB returned. However, as you've defined a moduleB mock above, the object is returned when you run it in your tests.