Skip to content
This repository has been archived by the owner on Apr 26, 2018. It is now read-only.
/ rewireify Public archive

Rewireify is a port of Rewire for Browserify that adds setter and getter methods to each module so that their behaviour can be modified for better unit testing.

License

Notifications You must be signed in to change notification settings

i-like-robots/rewireify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ This module is no longer maintained ⚠️

Rewireify Build status

Rewireify is a port of Rewire for Browserify that adds setter and getter methods to each module so that their behaviour can be modified for better unit testing. With Rewireify you can:

  • Inject mocks for other modules
  • Leak private variables
  • Override variables within the module

Rewireify is compatible with Browserify 3+

Usage

First install and save Rewireify into your project's development dependencies:

$ npm install rewireify --save-dev

Include the Rewireify transform as part of your test bundle:

$ browserify -e app.js -o test-bundle.js -t rewireify -s test-bundle

Rewireify can also ignore certain files with the --ignore option and a filename or glob expression. Multiple files or patterns can be excluded by separating them with commas:

$ browserify -e app.js -o test-bundle.js -t [ rewireify --ignore filename.js,**/*-mixin.js ] -s test-bundle

Now you can inspect, modify and override your modules internals in your tests. The __get__ and __set__ methods are the same as Rewire:

var bundle = require("./path/to/test-bundle");

// Private variables can be leaked...
subject.__get__("secretKey");

// ...or modified
subject.__set__("secretKey", 1234);

// Nested properties can be inspected or modified
subject.__set__("user.firstname", "Joe");

// Dependencies can be mocked...
subject.__set__("config", {
  cache: false,
  https: false
});

// ...or methods stubbed
subject.__set__("http.get", function(url, cb) {
  cb("This method has been stubbed");
});

// And everything can be reverted
var revert = subject.__set__("port", 3000);

revert();

For more details check out the Rewire documentation.

Usage with ES6

Rewireify will continue to work in ES6 environments but variables declared as constants (using const) may pose some issues. Constants cannot be reassigned and is now common practice to declare dependencies as such and therefore Rewireify will be unable to to replace them. However, variables declared as constants are not immutable so their individual methods and properties can still accessed and modified. If you must replace an entire dependency in your test environment and you have switched to using const then I recommended checking out Proxyquireify.

About

Rewireify is a port of Rewire for Browserify that adds setter and getter methods to each module so that their behaviour can be modified for better unit testing.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published