我試圖單元測試的CouchDB設計文檔(使用couchapp.js寫的),例如:單元測試不可用全局函數(couchapp,摩卡)
var ddoc = {
_id: '_design/example',
views: {
example: {
map: function(doc) {
emit(doc.owner.id, contact);
}
}
}
}
module.exports = contacts
然後我就可以要求這個文件放到摩卡測試非常容易。
問題是CouchDB公開了幾個全局函數,這些函數在CouchDB之外(即在這些單元測試中)不可用,這些地圖函數使用(上面的「發出」函數)。
我試圖在每一個測試來聲明全局函數,例如:
var ddoc = require('../example.js')
describe('views', function() {
describe('example', function() {
it('should return the id and same doc', function() {
var doc = {
owner: {
id: 'a123456789'
}
}
// Globally-scoped mocks of unavailable couchdb 'emit' function
emit = function(id, doc) {
assert.equal(contact.owner.id, id);
assert.equal(contact, doc);
}
ddoc.views.example.map(doc);
})
})
})
但摩卡失敗,全球泄漏的投訴。
所有這一切開始「味道錯了」,所以想知道是否有更好/更簡單的方法通過任何圖書館,甚至摩卡之外?
基本上我想讓每個測試都可以使用模擬實現,我可以從中調用assert。
任何想法?