javascript - 如何在模式上覆盖 Mongoose findOne() 函数以进行测试?

标签 javascript unit-testing mongoose

我正在尝试测试一些业务逻辑,并且需要覆盖位于 Mongoose 架构上的 findOne() 函数。

我正在尝试做的一个可行的小例子是:

function myFunc() {
  const qry = { ...search_criteria... };
  mySchema.findOne(qry)
     .exec()
     .then((doc) => { ...some business logic...})
}

如何操作 findOne() 函数以定义它在测试中返回的内容?

最佳答案

您可以使用sinon创建 stub for this function ,基本上完全用你需要的东西替换它。

例如:

const findOne = sinon.stub(mySchema, 'findOne');
findOne.callsFake((query) => { console.log('Test'); });

mySchema.findOne({}); // prints 'Test'

关于javascript - 如何在模式上覆盖 Mongoose findOne() 函数以进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58642202/

相关文章:

android - PowerMock + Robolectric + Dagger2。第一部分

mongodb - Mongoose findAndUpdate() 验证器为 null

node.js - 使用 mongoose 切换数据库

node.js - Mongoose 查找给定查询列表中的所有内容

javascript - JQuery UI 可选择 + 动态列表

javascript - 使用 hide、prop、attr 或 css 与 JQuery 隐藏元素之间的区别

node.js - Jest/Istanbul 覆盖未加载 require 的模块

python - 如何编写包含多个测试用例的 Python Selenium 测试脚本?

javascript - HTML 查找并停止显示子表

javascript - 从参数对象构建查询字符串