Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sinon:如何存根实例方法_Javascript_Node.js_Sinon - Fatal编程技术网

Javascript sinon:如何存根实例方法

Javascript sinon:如何存根实例方法,javascript,node.js,sinon,Javascript,Node.js,Sinon,以下是我正在编写的代码: Test.js class Test { constructor() { } func () { console.log('original') } } module.exports = Test Test = require('./Test') function Mock(){ this.test = new Test() } Mock.prototype.call = function() { this.test.func(

以下是我正在编写的代码:

Test.js

class Test {
  constructor() {
  }

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

module.exports = Test
Test = require('./Test')

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

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

module.exports = Mock
Mock.js

class Test {
  constructor() {
  }

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

module.exports = Test
Test = require('./Test')

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

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

module.exports = Mock
我正在尝试存根
Test.func
调用,该调用位于
Mock.call
中。我试过这个:

sb = sinon.createSandbox()
sb.stub(Test, 'func').callsFake(() => { console.log('stubbed') })
但是我得到了
类型错误:无法存根不存在的自有属性func
。当我这样做时:

sb.stub(new Test(), 'func').callsFake(() => { console.log('stubbed') })
new Mock().call()

我打印了
原件
,这意味着存根无法正常工作。如何存根函数调用?

您需要在创建的实例上存根函数调用:

var mock = new Mock();

sinon.stub(mock.test, 'func').callsFake(() => { console.log('stubbed') });
mock.call(); // should output "stubbed"

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

var mock = new Mock();

sinon.stub(mock.test, 'func').callsFake(() => { console.log('stubbed') });
mock.call(); // should output "stubbed"

将其放入
Mock
构造函数中不是一个选项。这是在测试文件中发生的。我需要从
Mock
classUpdated外部存根函数,以便从外部调用它。将其放入
Mock
构造函数不是一个选项。这是在测试文件中发生的。我需要从
Mock
classUpdated外部存根函数,以便从外部调用它。