node.js - Sinon stub Mongoose 保存以解析调用保存的对象

标签 node.js testing mongoose mocha.js sinon

我有以下代码:

const newImage = new Image(...);
newImage.save().then(image => {...})

有没有办法 stub Image 的保存方法来解析调用它的对象? IE。我希望 then 子句中的 imagenewImage

相同

有点像 sinon.stub(Image.prototype, 'save').resolves(theCallingObject);

这可能吗?任何帮助表示赞赏。 谢谢!

最佳答案

您可以使用callsFake 来模拟原型(prototype)方法...

...如果你传递给它一个普通函数(不是箭头函数)那么 this 将是模拟函数中的实例:

const sinon = require('sinon');
const assert = require('assert');

class Image {
  async save() {
    return 'something else';
  }
}

it('should work', async function() {
  sinon.stub(Image.prototype, 'save').callsFake(
    function() {  // <= normal function
      return Promise.resolve(this);  // <= this is the instance
    }
  );
  const newImage = new Image();
  const result = await newImage.save();
  assert.strictEqual(result, newImage);  // Success!
})

关于node.js - Sinon stub Mongoose 保存以解析调用保存的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56051603/

相关文章:

mysql - Nodejs MySQL : Query-Escaping adds single quotes

testing - apache 和 jboss 上的功能测试覆盖率工具

android - Mockito 需要但未调用

javascript - 使用 Mongoose 查询虚拟字段

javascript - Angular +图像上传。将表单数据传输到后端时遇到问题

node.js - Node JS 中的数据分块

javascript - 多部分/表单数据上传 - Nodejs - expressjs

javascript - 如何使用 mocha/chai 模拟窗口/文档

perl - DBD::Mock 为存储过程指定输出值

javascript - 如何从 lambda 函数返回字符串?