UNPKG

injectr

Version:

Finally, a solution to node.js dependency injection

52 lines (35 loc) 1.62 kB
# 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](http://www.opensource.org/licenses/MIT). [Fork it](https://github.com/nathanmacinnes/injectr). Modify it. Pass it around.