私は最近ノードプロジェクトを開始し、テスト駆動開発者として、新しいモジュールで依存性注入の問題にすぐに遭遇しました。これが、依存性注入を行うべきだと私が考えた方法です。私が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ステートメントの後に「()」を追加するなど)それ以上必要ないので、このソリューションが好きです。