mat*_*n23 7 mongoose node.js jasmine
我无法让茉莉花间谍为我的mongoose文件工作.我在我的用户架构中设置了一个方法,如下所示:
User.methods.doSomething = function() {
// implementation
}
Run Code Online (Sandbox Code Playgroud)
用户是我正在测试的模型的依赖项,我想确保正确调用doSomething.在我的测试中我有类似的东西:
spyOn(User.schema.methods, 'doSomething')
Run Code Online (Sandbox Code Playgroud)
如果我注销User.schema.methods.doSomething我得到了我期望的函数但是当我运行调用该方法的代码时,调用原始实现而不是间谍.我也做不到:
spyOn(userInstance, 'doSomething')
Run Code Online (Sandbox Code Playgroud)
在我的测试中,因为userInstance没有暴露,我真的想避免暴露它.基本上我想在User文档(实例?)原型上设置一个间谍.那可能吗?
小智 4
Mongoose 将模式中定义的方法复制到模型原型中,并且仅使用这些方法。所以尽管
User.schema.methods.doSomething === User.prototype.doSomething
Run Code Online (Sandbox Code Playgroud)
如果你设置:
spyOn(User.schema.methods, 'doSomething')
Run Code Online (Sandbox Code Playgroud)
它不会被调用 -User.prototype.doSomething
会的。你的猜测是对的,你应该使用:
spyOn(User.prototype, 'doSometing');
Run Code Online (Sandbox Code Playgroud)
and.callThrough
如果您想在设置间谍后调用原始方法,请不要忘记使用(我对此很感兴趣)。
归档时间: |
|
查看次数: |
392 次 |
最近记录: |