首页 > 解决方案 > Jest 和 Sinon:我如何存根整个班级?

问题描述

所以我知道在 sinon 你可以去

sinon.stub(class.prototype, 'method').callsFake(() => {
  // ... some logic here ... 
});

但是,我需要存根整个类,而不仅仅是一个方法。理想情况下,我想做类似的事情:

sinon.stub(class.prototype, myClassObjectHere);

有没有办法用诗乃做到这一点?

感谢您的帮助和回答,但我知道人们会问为什么需要这样做。没有其他办法。原因是我存根的这个 class.method 并不总是返回相同的值。基于传递给构造函数的参数......存根方法需要调用类上的其他几个方法之一。从我的存根方法来看,我看不到其他方法。谢谢你的帮助

标签: jestjssinon

解决方案


您可以使用sinon.createStubInstance(), 创建一个具有给定函数的新对象作为原型并存根所有已实现的函数。

var stub = sinon.createStubInstance(MyConstructor, overrides);

overrides 是覆盖已创建存根的可选映射,例如:

var stub = sinon.createStubInstance(MyConstructor, {
    foo: sinon.stub().returnsThis()
});

推荐阅读