Skip to content

Latest commit

 

History

History
50 lines (32 loc) · 2.15 KB

README.md

File metadata and controls

50 lines (32 loc) · 2.15 KB

inject-loader

build status Gemnasium npm version npm downloads

💉👾 A Webpack loader for injecting code into modules via their dependencies

This is particularly useful for writing tests where mocking things inside your module-under-test is sometimes necessary before execution.

inject-loader was inspired by, and builds upon ideas introduced in jauco/webpack-injectable.

Usage

Documentation: Using loaders

Use the inject loader by adding inject-loader! when you use require, this will return a function that can be passed things to inject.

By default all require statements in an injected module will be altered to be replaced with an injector, though if a replacement it not specified the default will be used.

Examples

Given some code in a module like this:

// MyStore.js

var Dispatcher = require('lib/dispatcher');
var EventEmitter = require('events').EventEmitter;
var handleAction = require('lib/handle_action');

Dispatcher.register(handleAction, 'MyStore');

You can manipulate it’s dependencies when you come to write tests as follows:

// If no flags are provided when using the loader then
// all require statements will be wrapped in an injector
MyModuleInjector = require('inject-loader!MyStore')
MyModule = MyModuleInjector({
  'lib/dispatcher': DispatcherMock,
  'events': EventsMock,
  'lib/handle_action': HandleActionMock
})

There are a few examples of complete test setups for both Webpack 1 & 2 in the example folder.

License

MIT (http://www.opensource.org/licenses/mit-license.php)