が必要になります。ノードJSユニットテスト:モック私は(Node.jsのモジュールで)jira.jsファイルとして次のセットアップのためのユニットテストを書くの問題が生じています依存
今var rest = require('restler'); // https://www.npmjs.com/package/restler
module.exports = function (conf) {
var exported = {};
exported.getIssue = function (issueId, done) {
...
rest.get(uri).on('complete', function(data, response) {
...
};
return exported;
};
、私が書きたいです私のgetIssue関数の単体テスト。 'restler'はRESTクライアントで、JIRA APIへのREST呼び出しを行い、JIRAの問題をコードで取得します。
したがって、createIssue(..)をテストできるようにするために、私はJasmine単体テストで 'rest' varをモックできるようにしたいと考えています。
どうすればこの方法を模擬できますか?私が先に進むことができるように私にいくつかの指針を与えてください。私は再配線を使ってみましたが、失敗しました。
これは私が(。すなわちgetIssue方法は未定義であることが判明)は動作しません。これは、これまで持っているものです。
var rewire = require("rewire");
var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter();
var cfg = require("../../../config.js").Configuration;
var jiraModule = rewire("../lib/jira")(cfg);
var sinon = require("sinon");
var should = require("should");
// https://github.com/danwrong/restler
var restMock = {
init : function() {
console.log('mock initiated'+JSON.stringify(this));
},
postJson : function (url, data, options) {
console.log('[restler] POST url='+url+', data= '+JSON.stringify(data)+
'options='+JSON.stringify(options));
emitter.once('name_of_event',function(data){
console.log('EVent received!'+data);
});
emitter.emit('name_of_event', "test");
emitter.emit('name_of_event');
emitter.emit('name_of_event');
},
get : function (url, options) {
console.log('[restler] GET url='+url+'options='+JSON.stringify(options));
},
del : function (url, options) {
console.log('[restler] DELETE url='+url+'options='+JSON.stringify(options));
},
putJson : function (url, data, options) {
console.log('[restler] PUT url='+url+', data= '+JSON.stringify(data)+
'options='+JSON.stringify(options));
}
};
var cfgMock = {
"test" : "testing"
};
jiraModule.__set__("rest", restMock);
jiraModule.__set__("cfg", cfgMock);
console.log('mod='+JSON.stringify(jiraModule.__get__("rest")));
describe("A suite", function() {
it("contains spec with an expectation", function() {
restMock.init();
restMock.postJson(null, null, null);
console.log(cfg.jira);
// the following method turns out to be undefined but when i console.log out the jiraModule, i see the entire code outputted from that file
jiraModule.getIssue("SRMAPP-130", function (err, result) {
console.log('data= '+JSON.stringify(result));
});
expect(true).toBe(true);
});
});
誰かが依存関係を必要とする「休息」を模擬する方法で私を導くことができる場合&ユニットテストこのメソッドは非常に便利です。
また、「conf」がmodule.exportsに渡されるのをどうやって模擬すべきですか?
おかげ
ジャスミン・ノードは、なぜあなたはモカを使用している、タグ付けされていますか? –
Opps、私はそれを気にしませんでしたが、依存関係を模倣することはテストフレームワークとは関係ありません。 – sarbbottam
こんにちは、指導のおかげで!もし私がproxyquireを使用している場合、私はconf内をどのように渡すのですか?私はconfを模倣する必要があります....これはmodule.exportsの引数として取られます.. – Rookie