I (a node.js modülünde) bir jira.js dosyası olarak aşağıdaki kurulum için birim testi yazma sorunlarınız duyuyorum: Artıkdüğümün js birim testi: gerektiren alay bağımlılık
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;
};
i yazmak istiyorum getIssue işlevim için birim testi. 'restler', bir JIRA sorununu kodum aracılığıyla almak için JIRA API'sine REST çağrıları yaptığım bir REST istemcisidir.
createIssue (..) 'yı test edebilmek için Jasmine birim testlerimde' rest 'varyantıyla dalga geçmek istiyorum.
Bu yöntemle nasıl baş edebilirim? Lütfen devam edebilmek için bana bazı işaretçiler verin. Rewire kullanmayı denedim ama başarısız oldum. (. Yani getIssue yöntemi tanımlanmamış çıkıyor): Birisi 'kalanını' alay nasıl bana yol Eğer
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);
});
});
bağımlılık & gerektiren
Bu
i şimdiye kadar çalışmıyor hangi ne var birim çok yararlı olacak bu yöntemi test edin.Ayrıca, 'conf' modül.exports'a iletilmek zorunda kalmamalıyım? Sen/proxyquire veya mockery saplama için kullanmak bağımlılıkları alay olabilir
sayesinde
Yasemin-düğüm neden mocha kullanırken, etiketlenmiş? –
Opps, Dikkatim, bağımlılığın alay etmesinin test çerçevesiyle ilgisi yoktur. – sarbbottam
Merhaba, rehberlik için teşekkürler! Proxyquire kullanıyorum eğer conf nasıl geçebilirim? Modül.exports tarafından bir argüman olarak ele alındığı gibi, aynı zamanda alay etmek zorundayım .. – Rookie