如何解决如何使用 sinon 存根子类
class Api {
constructor(stuff) {
...set stuff
}
doSomething() {
...doesSomething
}
}
class UtilApi extends Api {
constructor(stuff) {
super(stuff);
}
getThings = async() => {
this.doSomething();
return things;
}
}
我习惯于使用语法在 sinon 中存根
sinon.stub(SomeClass.prototype,'someMethod').resolves({});
但是,当我尝试这样做时:
sinon.stub(UtilApi.prototype,'getThings').resolves({});
我收到错误消息:
TypeError: Cannot stub non-existent property getThings
在我的测试套件中查看 UtilApi.prototype
时 - 我注意到它只是父 Api
。所以我可以存根父类中的方法 doSomething
,但我不能存根子类中的任何方法。
我尝试过 callsFake
、Ovject.setPrototypeOf
和 sinon.createStubInstance
- 但都不起作用。
如何存根 UtilApi
以伪造方法 getThings()
的返回?
更新
感谢评论者 - 我再次查看了我的代码并将 getThings
从箭头函数更改为常规函数。
getThings = async() => {
this.doSomething();
return things;
}
async getThings() {
this.doSomething();
return things;
}
这解决了问题并正确存根 - 当我知道为什么它不适用于箭头函数时会更新。
更新 2
问题在这里回答https://github.com/sinonjs/sinon/issues/1136
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。