如何在 SinonJS 中对模拟方法的返回值进行存根
Posted
技术标签:
【中文标题】如何在 SinonJS 中对模拟方法的返回值进行存根【英文标题】:How to stub the return value on a mocked method in SinonJS 【发布时间】:2015-04-30 09:35:53 【问题描述】:我想做如下的事情:
sinon.mock(obj)
.expects('func')
.atLeast(1)
.withArgs(args)
.returns(somePredefinedReturnValue);
我希望一切都达到并包括 withArgs,但是我需要存根方法的返回值,以便在它返回时不会破坏被测方法中的其余执行流程。
我这样做的原因是因为我发现我的一些 REST 端点测试会静默通过,而当它们真的失败时,如果带有内部断言的回调的存根方法没有被调用.我正在尝试验证这些回调实际上是否被调用,以便我的测试不会给出误报。
【问题讨论】:
Stub return value for all inputs in Rhino Mocks 的可能重复项 @PaulSweatte 我使用的是 Sinon,而不是 Rhino。 Rhino 解决方案可能不适用于诗乃。 【参考方案1】:在官方文档中 http://sinonjs.org/docs/#stubs
var stub = sinon.stub(object, "method", func);
您可以传递一个返回所需值的函数参数。
编辑:
这已从 v3.0.0 中删除。相反,您应该使用
stub(obj, 'meth').callsFake(fn)
【讨论】:
这个答案有点过时了,因为v3.0.0
你应该使用 callsFake 来这样做,比如:var stub = sinon.stub(object, "method").callsFake(func);
Reference here。
编辑对我来说看起来不错!具体问题是询问模拟,而不是存根,但 callsFake
也适用于模拟。以上是关于如何在 SinonJS 中对模拟方法的返回值进行存根的主要内容,如果未能解决你的问题,请参考以下文章