如果我按var a = sinon.createStubInstance(MyContructor)
创建了一个实例。
如何替换var stub = sinon.stub(object, "method", func);
之类的存根函数。
我这样做的主要原因是希望以this mentioned
实现多个回调变通方法答案 0 :(得分:14)
我认为这没有多大意义,因为如果你用另一个存根替换一个存根...那你为什么不用第一个存根来实现你想做的任何事情呢?第二根存根。
无论如何,org.apache.spark.shuffle.FetchFailedException: Failed to connect to ip-10-231-187-233.ec2.internal/10.231.187.233:54801
根据文档执行以下操作:
用
sinon.stub(object, "method", func)
取代object.method
,包裹在间谍中。像往常一样,func
;可用于恢复原始方法。
因此,如果要替换存根实例的存根函数,那么为什么不这样做:
object.method.restore()
或者如果你想创建一个存根而不是间谍:
var a = sinon.createStubInstance(MyConstructor);
a.method = sinon.spy(function() { return "Foo Bar"; });
答案 1 :(得分:10)
使用sinon.createStubInstance(MyConstructor)
或sinon.stub(obj)
对整个对象进行存根后,只能通过为属性分配新存根(如@ g00glen00b所述)或在重新存根之前恢复存根来替换存根
var a = sinon.createStubInstance(MyConstructor);
a.method.restore();
sinon.stub(object, "method", func);
这样做的好处是,您仍然可以使用预期的行为调用a.method.restore()
。
如果Stub API有一个.call(func)
方法来覆盖事实后被存根调用的函数会更方便。
答案 2 :(得分:1)
无需覆盖(event) => this.changeInput.bind(event,index)
,我们可以直接在a.method
上使用callsFake
:
a.method
答案 3 :(得分:0)
从2.0 +
中存储方法的另一种方法
sinon.stub(object, "method").callsFake(func);
object.method.restore()