使用模块加载器来演示Node.js的依赖注入功能

如果你对Node.js的依赖注入还有点困惑,你可以看下面的代码示例,看它在上下文中的使用,也许能帮你清楚一些。首先,我们创建一个简单的模块。

var fs = require('fs');

module.exports = {
// Do something with `fs`
}

想象一下这个很酷,对吗?不管怎样,现在我们来测试刚刚编写的那个模块,但是我们要模拟fs来看看它是怎么在内部使用的。

// Jasmine's syntax http://pivotal.github.com/jasmine/
describe('someModule', function() {
var loadModule = require('module-loader').loadModule;
var module, fsMock;

beforeEach(function() {
fsMock = {
  // a mock for `fs`
};

// load the module with mock fs instead of real fs
module = loadModule('./web-server.js', {fs: fsMock});
});

it('should work', function() {
// a test that utilizes the fact that we can now control `fs`
});
});

需要注意的是在代码的7至12行,我们为fs创建了一个伪对象并使用我们新的loadModule函数将这个使用的对象联系到上面的小模块中(这样做非常棒,对不对?)。

posted @ 2013-01-06 17:12  ctou45  阅读(261)  评论(0编辑  收藏  举报