我正在尝试存根find或exec函数,以测试以下函数:
function getOpenTickets() {
return Ticket.find({})
.populate('assignees', ['fullName', 'firstName', 'email', 'notificationSettings.dailyEmail'])
.populate('property', 'name')
.populate('type', 'title')
.populate({path: 'unit', model: 'Unit', select: 'title'})
.sort('created')
.lean()
.exec();
}我找到了几篇关于截断mongoose方法的帖子,但没有一个对我有效,以下是我所拥有的:
it('should test getOpenTickets', async() => {
findStub = sinon.stub(Ticket, 'find');
var result = await utils.__get__('getOpenTickets')();
findStub.restore();
});但我得到了:
Cannot read property 'populate' of undefined所以我试着用一个假的对象替换它:
var fakeFind = {
args: {
populate: [],
sort: null,
lean: null
},
populate: function (a) {
this.args.populate.push(a)
},
sort: function (a) {
this.args.sort = a;
},
lean: function () {
this.args.lean = true
},
exec: function () {
return Promise.resolve(this.args);
}
}和
findStub = sinon.stub(Ticket, 'find').callsFake(fakeFind);结果是:
TypeError: this.fakeFn.apply is not a function我还尝试过存根mongoose.Model、prototype、exec和其他一些东西,但没有成功。
有什么想法吗?
https://stackoverflow.com/questions/47704304
复制相似问题