javascript-使用sinon.js通过基于真实构造函数/原型的间谍方法创建“间谍对象”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用sinon.js通过基于真实构造函数/原型的间谍方法创建“间谍对象”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1241字,纯文字阅读大概需要2分钟。
内容图文
![javascript-使用sinon.js通过基于真实构造函数/原型的间谍方法创建“间谍对象”](/upload/InfoBanner/zyjiaocheng/694/18908bccfa37463bb7f2e3563ec08a02.jpg)
我正在使用sinon.js作为在我的Mocha测试中消除依赖项的方法.我喜欢“间谍”方法而不是经典的模拟方法,因为与经典的模拟对象相比,间谍的内省似乎更清晰,并且具有更大的灵活性.
就是说,我想知道在为整个对象创建测试间谍程序时是否使用不正确.假设我有一个测试依赖项,上面有4个方法,并且我想对每个方法进行存根,并对其中一个或两个方法进行断言.目前,我正在这样做:
var spyObj = {
aMethod: sinon.spy(),
otherMethod: sinon.spy(),
whatever: sinon.spy()
};
然后我只问诸如spyObj.aMethod.knownWith(a,b,c)之类的事情.
有没有比重复测试套件本身中的方法名称更好的方法来模拟整个类?看起来sinon.stub()试图遍历给定对象的所有成员,但这似乎不能作为在更现代的JS运行时(例如V8)中获取大多数对象的所有方法的一种方式,除非该对象实际上是可数的.它还尝试猴子修补实际对象,而不是返回等效对象,这在某种程度上是不可取的.我只需要一个符合接口的对象,但是表现得像一个空对象,除非我另有说明.
能够执行以下操作将是一件好事:
var spyObject = sinon.spy(MyClass.prototype);
如何创建Node.js中的构造函数/原型的所有方法,以进行如上的包装?
这更多的是讲究逻辑,而不是测试许多方法的调用(我尝试将这些方法限制为一个,或者一推为两个).例如,可能执行不必要的I / O或执行其他复杂设备的事情.
解决方法:
从Sinon 1.6.0开始,您可以执行以下操作:
var stub = sinon.createStubInstance(MyClass)
请参阅Stub API section或source中有关sinon.stub的文档.
内容总结
以上是互联网集市为您收集整理的javascript-使用sinon.js通过基于真实构造函数/原型的间谍方法创建“间谍对象”全部内容,希望文章能够帮你解决javascript-使用sinon.js通过基于真实构造函数/原型的间谍方法创建“间谍对象”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。