Bu senaryoyu doğru şekilde nasıl ekleyeceğimi bulmaya çalışıyorum ama biraz sıkışmış durumdayım.Bir kurucudaki stubbing değişkenleri?
Bu senaryoda, içinde couchdb veritabanlarının bir listesi olan bir db.js
dosya var (her veritabanı belirli bir yıl için tweet girdileri içerir).
Her yıl yeni bir veritabanı oluşturulur ve bu yılın yeni girişlerini tutmak için bu listeye eklenir (bu nedenle veritabanlarının listesi sabit değildir, her yıl değişir). yöntemleri gibi görünür eklenmeden önce,
var nano = require('nano')(`http://${host}`);
var databaseList = {
db1: nano.use('db2012'),
db2: nano.use('db2013'),
db4: nano.use('db2014'),
db5: nano.use('db2015'),
db6: nano.use('db2016')
};
module.exports.connection = nano;
module.exports.databaseList = databaseList;
Ve event.js
(basit bir model dosyası):
Yani benim db.js
dosya şuna benzer
var lastInObject = require('../../helpers/last_in_object');
var db = require('../../db');
var EventModel = function EventModel() {
this.connection = db.connection;
this.databaseList = db.databaseList;
this.defaultDatabase = lastInObject(db.databaseList);
};
EventModel.prototype.findAll =
function findAll(db, callback) {/* ... */}
, nasıl yapmak databaseList
saplaması, bu nedenle, databaseList
nesnesinin büyüsünden herhangi bir kırılganlık olmadan model yöntemlerinin her birini güvenle test edebilirim?
İdeal olarak, testlerimde databaseList'in içeriklerini kaçırmak, farklı senaryolarla uğraşmak isterdim, ama nasıl başa çıkacağından emin değilim. İşte
defaultDatabase
özelliği her zaman en son bilinen olaya işaret sağlamak için, bir
örnek testi, ama belli ki
databaseList
değişiklikler o testleri yapar gibi zaman ben her yıl bu testi güncellemek zorunda kalmak istemiyoruz çok kırılgan.
it('should set the default database to the last known event',() => {
var Event = require('../event');
var newEventModel = new Event();
expect(newEventModel.defaultDatabase.config.db)
.to.equal('db2014');
});
Öneriler hoş geldiniz! Eğer bu yanlışlıktan geçersem, ne yaptığımı ve nasıl yaklaşabileceğimi bana bildirin!
Ayrıca, bu sadece bir senaryodur, lastInObject
için testlerim var, ilgili verilerle nasıl başa çıkılacağıyla ilgileniyorum.
Çok iyi not! Aslında çalışmak için alay konusu olmak için uğraşıyordum ama etrafta arama yaptıktan sonra proxyquire alayla çok benziyor ve şimdi test çalışmamı aldım! Teşekkürler @jahnestacado! :) – Scotty