【问题标题】:How to stub static methods with sinon in ES6?如何在 ES6 中使用 sinon 存根静态方法?
【发布时间】:2016-11-08 03:45:54
【问题描述】:
var MyClassStub = sinon.createStubInstance(MyClass);

MyClassStub 不包含静态方法。如何解决?

【问题讨论】:

标签: node.js sinon stub


【解决方案1】:

静态方法:

sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
  return {}
})

不是静态方法:

sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
  return {}
})

【讨论】:

    【解决方案2】:

    使用 sinon 3.1.0 版,我可以使用下面给出的代码来模拟(存根)私有静态变量:

    const YourClass = require('./lib/YourClass');
    const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
    

    唯一需要记住的是 sinon.stub() 方法中的第一个参数应该是类本身。它不应该是像const yourClassObject = new YourClass(); 这样的类的对象。原因是该类的任何对象都不允许您访问静态方法。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 2016-09-25
      • 2014-07-17
      • 2015-04-18
      • 1970-01-01
      • 2019-09-12
      • 2018-07-16
      • 2021-06-10
      • 2018-05-31
      相关资源
      最近更新 更多