首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sinon:如何对实例方法进行存根

sinon:如何对实例方法进行存根
EN

Stack Overflow用户
提问于 2017-12-18 14:58:07
回答 1查看 5K关注 0票数 0

下面是我正在处理的代码:

Test.js

代码语言:javascript
运行
复制
class Test {
  constructor() {
  }

  func () {
    console.log('original')
  }
}

module.exports = Test

Mock.js

代码语言:javascript
运行
复制
Test = require('./Test')

function Mock(){
  this.test = new Test()
}

Mock.prototype.call = function() {
  this.test.func()
}

module.exports = Mock

我正在尝试对Test.func调用进行存根,该调用位于Mock.call内部。我试过这个:

代码语言:javascript
运行
复制
sb = sinon.createSandbox()
sb.stub(Test, 'func').callsFake(() => { console.log('stubbed') })

但我得到了TypeError: Cannot stub non-existent own property func。当我这么做时:

代码语言:javascript
运行
复制
sb.stub(new Test(), 'func').callsFake(() => { console.log('stubbed') })
new Mock().call()

我打印了original,这意味着存根不能正常工作。如何删除函数调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-18 15:04:32

您需要将其存根到您创建的实例上:

代码语言:javascript
运行
复制
var mock = new Mock();

sinon.stub(mock.test, 'func').callsFake(() => { console.log('stubbed') });
mock.call(); // should output "stubbed"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47871060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档