我正在尝试对 CouchDB 设计文档(使用couchapp.js编写)进行单元测试,例如:
var ddoc = {
_id: '_design/example',
views: {
example: {
map: function(doc) {
emit(doc.owner.id, contact);
}
}
}
}
module.exports = contacts
然后我可以很容易地将此文件要求到 mocha 测试中。
问题是CouchDB 暴露了一些map 函数使用的全局函数(上面的“emit”函数),这些函数在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);
})
})
})
但摩卡因抱怨全球泄漏而失败。
所有这一切都开始“闻起来不对劲”,所以想知道是否有更好/更简单的方法通过任何库,甚至在 Mocha 之外?
基本上我想让每个测试都可以使用模拟实现,我可以从中调用断言。
有任何想法吗?