我的代码如下:
function dummy (options, callback) {
MModel.find({x: options.y},
function (err, res) {
if (err) {
return callback(err);
}
if (res) {
callback(null, res.sort({timestamp : 1}));
} else {
callback(null, {});
}
}).sort({timestamp : -1}).limit(5);
}
我正在尝试对此函数进行单元测试,但是我不能将函数MModel.find存根,因为它内部有一个res.sort,而.sort后跟一个.limit。如果我使用存根,则表示.sort是一个属性,不能用作函数。我尝试的下一件事是使用sinon-mongoose来模拟模型本身,然而,我遇到了exec不是函数的问题,因为我正在遵循sinon-mongoose文档:
sinon.mock(MongooseModel)
.expects('find')
.chain('limit').withArgs(10)
.chain('sort').withArgs('-date')
.chain('exec')
.yields(null, 'SOME_VALUE');
我添加了完成回调并且使用完成回调添加到期望('find')。withArgs({x:'abc'},完成)并且它给了我一个期望错误,表示“意外函数查找({x:'abc'},function(){})当找到预期的函数时({x:'abc'},function(){} [,...])“。有没有人知道function(){} [,...]与function(){}相比意味着什么?
感谢任何帮助。谢谢!
答案 0 :(得分:0)
想出来的问题是我传递了完成回调,这不是正确的方法。实际问题涉及对exec回调使用常规回调。