当前位置: 首页 > 面试题库 >

与Sinon一起使用猫鼬模型

颛孙嘉石
2023-03-14
问题内容

我想为save特定模型中的Mongoose 方法创建一个存根,以便我创建的模型的任何实例都将调用该存根,而不是普通的Mongoose
save方法。我的理解是,执行此操作的唯一方法是像这样对整个模型进行存根:

var stub = sinon.stub(myModel.prototype);

不幸的是,这行代码使我的测试抛出以下错误:

TypeError: Cannot read property 'states' of undefined

有人知道这里出了什么问题吗?


问题答案:

有两种方法可以完成此操作。首先是

var mongoose = require('mongoose');
var myStub = sinon.stub(mongoose.Model, METHODNAME);

如果您使用log mongoose.Model控制台,则会看到该模型可用的方法(特别是其中不包含lte选项)。

另一种(特定于模型的)方式是

var myStub = sinon.stub(YOURMODEL.prototype.base.Model, 'METHODNAME');

同样,存根可以使用相同的方法。

编辑:诸如保存的一些方法如下:

var myStub = sinon.stub(mongoose.Model.prototype, METHODNAME);
var myStub = sinon.stub(YOURMODEL.prototype, METHODNAME);


 类似资料:
  • 问题内容: 在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose / mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别? 例如,此行的postgres / sql ORM等价于什么? (猫鼬和express.js): 问题答案: 在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望

  • 问题内容: 这是我的架构: 这是代码: 在包含了用户的。 该代码有效,除非添加了。我使用来过滤结果,仅获取我关注的用户的图片,但是console.log向我显示搜索结果是不确定的,但是当我不编写查询时,就会得到图片,但我会获取所有图片,而不仅是我关注的用户的图片。 有什么解决方案吗…? 谢谢前进! 编辑: 编辑: 问题答案: Mongoose不会对的参数进行任何基于模式的转换,因此您需要将字符串I

  • 问题内容: 我试图让MongoDB根据其索引检测重复值。我认为这在MongoDB中是可能的,但是通过Mongoose包装器,事情似乎被打破了。所以对于这样的事情: 我可以用同一封电子邮件保存2个用户。真是 在这里也表达了同样的问题:https : //github.com/LearnBoost/mongoose/issues/56,但是该线程很旧,导致无处可去。 现在,我正在手动调用数据库以查找用

  • 在前端,我有3个层次结构。 顶层显示一个测试摘要,包含统计信息,如%通过/失败、各种标签、运行标识等。 第二级由测试套件的各个部分组成,这些部分可以通过顶级运行id访问。其中包含测试的名称,特定的测试通过/失败。 第三级是实际测试本身,包括报告、通过/失败状态等。 我使用的是平均堆栈,我想知道使用1、2或3种不同的Mongoose模型在MongoDB中存储数据的利弊。我知道在数组中使用嵌入式文档的

  • 我希望在当前测试的文件中存根一个函数。此函数在进行如下分解时是必需的: 在测试时,永远不会调用存根,而是继续调用实际函数。但当我“正常”需要它时(即:不进行分解) 然后正确使用存根,一切正常 我感觉到这是因为析构是如何工作的,事实上存根是对象属性,而不是直接的函数。无论如何,如果你能给我提供一些见解,我将不胜感激!

  • 问题内容: 我对在我的主模式中使用子文档和更深层的优缺点感到好奇: 要么 我目前在各处使用子文档,但主要是想知道性能或查询我可能遇到的问题。 问题答案: 根据文档,它是完全一样的。但是,使用Schema也会添加一个字段(只要您没有禁用该字段),并且大概会使用更多资源来跟踪子文档。 备用声明语法 v3中的新增功能 如果不需要访问子文档架构实例,则还可以通过简单地传递对象文字来声明子文档[…]