0.0.7 • Published 11 years ago
injct v0.0.7
injct
npm install injct --save
extremely simple dependency injection for nodejs
var injct = require('injct');
function UserRepository() {}
injct.register('userRepository', UserRepository);
function UserService(userRepository) {
this.userRepository = userRepository;
injct.apply(this);
}
var userService = new UserService();
assert.equal(userService.userRepository instanceof UserRepository);
two scopes: prototype and unique
- prototype: new instance when the class is requested
injct.register(name, class)
- unique: reuse the instance
injct.unique(name, class)
mocking
Say you have a registered UserRepository class like this:
var injct = require('injct');
injct.register('userRepository', UserRepository);
function UserRepository() {}
module.exports = UserRepository;
And an user service that expects that UserRepository to be injected
function UserService(userRepository) {
this.userRepository = userRepository;
injct.apply(this);
}
You can mock the repository behavior, no matter the scope
injct.register('userRepository', function AnotherRepository(){});
var userService = new UserService();
assert.ok(userService.userRepository instanceof AnotherRepository);