我知道如何存根Mongoose模型(多亏了Stubbing a Mongoose model with Sinon),但我不太明白如何存根调用,比如:
myModel.findOne({"id": someId})
.where("someBooleanProperty").equals(true)
...
.exec(someCallback);
我尝试了以下几种方法:
var findOneStub = sinon.stub(mongoose.Model, "findOne");
sinon.stub(findOneStub, "exec").yields(someFakeParameter);
无济于事,有什么建议吗?
6条答案
按热度按时间rkue9o1l1#
我通过做以下几件事解决了这个问题:
t9aqgxwy2#
看看sinon-mongoose。您可以期待只有几行代码的链接方法:
您可以在回购上找到可用的示例。
另外,建议使用
mock
方法而不是stub
,这样可以检查该方法是否确实存在。bkkx9g8r3#
另一种方法是存根或侦察所创建查询的原型函数(使用SINON):
vbopmzt14#
如果您使用Promise,您可以尝试sinon-as-promised:
cgyqldqp5#
我对Mongoose使用承诺,并使用如下方法:
然后我可以这样称呼它:
lvjbypge6#
使用多个Mongoose方法存根,使用以下代码。服务代码
测试用例代码