Skip to content

nathanmacinnes/injectr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

injectr

Finally, a solution to node.js dependency injection

Install it

npm install injectr. Boom.

Use it

var injectr = require('injectr');
var myScript = injectr('../lib/myScript.js', {
    fs : mockFs,
    crypto : mockCrypto
});

Now when you require('fs') or require('crypto') in myScript.js, what you get is mockFs or mockCrypto.

Treat injectr like require for your tests, with a second argument to pass in your mocks.

Paths are now relative to the current file, just like require. Please update your tests if you are upgrading from v0.4 or below.

Context

injectr gives you access to the context of the injectr'd file via an optional third argument. Provide an object, and injectr will modify it as necessary and use that as the context.

var myScript = injectr('../lib/myScript.js', {}, {
    Date : mockDate,
    setTimeout : mockSetTimeout
});

As of version 0.4, injectr doesn't create a full node.js context for you to use. Instead, it isolates your script in its own sandbox, allowing you to include mocks of only the bits that your script needs.

CoffeeScript

injectr compiles any *.coffee files for you, so you can test your CoffeeScript too. The default settings can be changed by overwriting the injectr.onload function. It takes the filename and file contents as arguments, and returns the compiled script.

Share it

injectr is under the MIT License. Fork it. Modify it. Pass it around.

About

Finally, a solution to node.js dependency injection

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5