如何在 ES6 中用 sinon 存根静态方法?
How to stub static methods with sinon in ES6?
var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub 不包含静态方法。如何解决?
静态方法:
sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
return {}
})
不是静态方法:
sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
return {}
})
使用 sinon 版本 3.1.0,我可以使用下面给出的代码模拟(存根)私有静态变量:
const YourClass = require('./lib/YourClass');
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
唯一需要记住的是 sinon.stub() 方法中的第一个参数应该是 class 本身。它不应该像 const yourClassObject = new YourClass();
这样的 class 的对象。原因是 class 的任何对象都不允许您访问静态方法。
var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub 不包含静态方法。如何解决?
静态方法:
sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
return {}
})
不是静态方法:
sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
return {}
})
使用 sinon 版本 3.1.0,我可以使用下面给出的代码模拟(存根)私有静态变量:
const YourClass = require('./lib/YourClass');
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
唯一需要记住的是 sinon.stub() 方法中的第一个参数应该是 class 本身。它不应该像 const yourClassObject = new YourClass();
这样的 class 的对象。原因是 class 的任何对象都不允许您访问静态方法。