Я недавно начал проект узла и, будучи разработчиком, управляемым тестами, быстро столкнулся с проблемой внедрения зависимостей с моим новым модулем.Вот как я понял, что должен делать инъекцию зависимостей.Важно отметить, что я использую обеты в качестве основы 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).