【发布时间】:2012-02-23 05:54:38
【问题描述】:
我最近开始了一个节点项目,作为一名测试驱动开发人员,我很快就遇到了我全新模块的依赖注入问题。 以下是我认为我应该进行依赖注入的方法。请务必注意,我使用 vows 作为 BDD 框架并使用 Sinon 对其进行扩展。
我的模块:
exports.myMethod = function () {
var crypto = exports.cryptoLib || require('ezcrypto').Crypto;
crypto.HMAC(
crypto.SHA256,
'I want to encrypt this',
'with this very tasty salt'
);
};
我的测试:
var vows = require('vows'),
sinon = require('sinon');
vows.describe('myObject').addBatch({
'myMethod':{
'topic':true,
'calls ezcrypto.HMAC':function () {
var myObject = require('../playground.js');
var mock = sinon.mock(require('ezcrypto').Crypto);
myObject.cryptoLib = mock;
myObject.cryptoLib.HMAC = mock.expects("HMAC").once().withExactArgs(
require('ezcrypto').Crypto.SHA256,
'I want to encrypt this',
'with this very tasty salt'
);
myObject.cryptoLib.SHA256 = require('ezcrypto').Crypto.SHA256;
myObject.cryptoLib = mock;
myObject.myMethod();
mock.verify();
}
}
}).export(module);
您认为这是正确的方法吗?我喜欢这个解决方案,因为它在您使用模块时不需要更多(例如在 require 语句后添加“()”)。
【问题讨论】:
-
你还没说是什么问题。
-
问题是我不确定这是正确的方法。寻找验证我并没有在这里做一些根本上有缺陷的事情。
-
至少测试通过了。更多的是关于代码设计,我想知道它是否符合犹太教规。
-
没有什么是真的,一切都是允许的。
标签: javascript node.js dependency-injection vows sinon