sinon.replace vs sinon.stub just to replace return value?(Sinon.place vs sinon.stub只是为了替换返回值吗?)
本文介绍了Sinon.place vs sinon.stub只是为了替换返回值吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在使用sinon时,我只想替换函数的返回值,而不需要其他信息,比如它被调用了多少次。哪一个更好?
sinon.replace(Component.prototype, 'getValue', () => 123);
const myStub = sinon.stub(Component.prototype, 'getValue');
myStub.return(123);
推荐答案
我很少看到sinon.replace
在很多项目中使用。使用stub
的好处是您可以多次修改返回值。
let getValueStub;
before(function() {
getValueStub = sinon.stub(Component.prototype, 'getValue');
})
after(function() {
sinon.restore();
})
it('test case A if return value is 123', function() {
getValueStub.returns(123);
// do expectation
})
it('test case B if return value is 234', function() {
getValueStub.returns(234);
// do expectation
})
同时,对于replace
,根据sinon文档,您只能使用一次。
Sandbox.place(对象,属性,替换);
用替换参数替换对象上的属性。试图 替换已替换的值会导致异常。替换可以是任何值,包括间谍、存根和假货。
例如:
sinon.replace(Component.prototype, 'getValue', function () {
return 123;
});
sinon.replace(Component.prototype, 'getValue', function () { // this will return error
return 456;
});
将返回错误
TypeError: Attempted to replace getValue which is already replaced
您可能可以通过将函数替换为存根来实现与存根相同的功能,sinon.replace
getValueStub = sinon.stub();
sinon.replace(Component.prototype, 'getValue', getValueStub);
getValueStub.returns(123);
getValueStub.returns(456);
但是,由于简单,我更喜欢使用sinon.stub
。
引用:
https://sinonjs.org/releases/v7.2.2/sandbox/#sandboxreplaceobject-property-replacement
这篇关于Sinon.place vs sinon.stub只是为了替换返回值吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Sinon.place vs sinon.stub只是为了替换返回值吗?


猜你喜欢
- 400或500级别的HTTP响应 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Flexslider 箭头未正确显示 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01