以下示例已简化。我有一个getter方法:
class MyClass {
constructor() {}
get myMethod() {
return true;
}
}
由babel处理。我想这样嘲笑它:
var sinon = require('sinon');
var MyClass = require('./MyClass');
var cls = new MyClass();
var stub = sinon.stub(cls, 'myMethod');
stub.returns(function() {
return false;
});
但是我收到以下错误:
TypeError: Attempted to wrap undefined property myMethod as function
这种情况发生在sinon库的第1版和第2版。
答案 0 :(得分:4)
这是您如何定义方法myMethod
的问题。当您使用get
定义方法时,它实际上被视为属性而不是方法。这意味着您可以访问cls.myMethod
但cls.myMethod()
会抛出错误,因为它不是函数
<强>问题强>
class MyClass {
constructor() {}
get myMethod() {
return true;
}
}
var cls = new MyClass();
console.log(cls.myMethod())
&#13;
<强>解决方案强>
您必须更新类定义,将myMethod
视为下面的函数
class MyClass {
constructor() {}
myMethod() {
return true;
}
}
var cls = new MyClass();
console.log(cls.myMethod())
&#13;
现在进行此更改,sinon.stub
应该可以正常运行