问题标签 [sinon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
coffeescript - 用于 window.location.search 的 Sinon.JS 存根
我正在尝试测试一个调用 window.location.search 的简单函数。我试图了解如何存根此调用,以便我可以返回我选择的 url。
功能:
测试用例:
我最初的尝试是直接返回一个值,如下所示:
这当然行不通。我认为我没有正确指定存根,但它显示了我的意图。
任何有关如何解决此问题的想法将不胜感激。
javascript - 使用 sinon.js 使用基于真实构造函数/原型的 spy 方法创建“间谍对象”
我使用 sinon.js 作为在我的 Mocha 测试中排除依赖项的一种方式。我更喜欢 'spy' 方法而不是经典的 mock 方法,因为 spy 的内省似乎比经典的 mock 对象有点落后的想法更清晰,并且提供了更大的灵活性。
也就是说,我想知道在为整个对象创建测试间谍时我是否使用不正确。假设我有一个测试依赖项,上面有 4 个方法,我想存根这些方法中的每一个,并对其中的一个或两个进行断言。目前我正在这样做:
然后我只问诸如spyObj.aMethod.calledWith(a, b, c)
.
有没有比在测试套件本身中重复方法名称更好的方法来模拟整个类?看起来 sinon.stub() 试图遍历给定对象的所有成员,但这似乎不能作为在更现代的 JS 运行时(如 V8)中获取大多数对象的所有方法的一种方式,除非对象实际上是可枚举的东西。它还尝试对实际对象进行修补,而不是返回等效对象,这在某种程度上是不可取的。我只需要一个符合接口的对象,但行为类似于空对象,除非我另有说明。
能够执行以下操作会很好:
如何在 Node.js 中找到构造函数/原型的所有方法,以便制作像上面这样的包装器?
这更多是关于排除逻辑,而不是测试对许多方法的调用(我试图限制为一个,或者推送两个)。例如,可能会执行不需要的 I/O 或执行时需要额外的复杂夹具的事情。
backbone.js - Qunit + Sinon 测试 Backbone 的模型事件
这些天来,我正在尝试为我的第一个严肃的 Backbone 应用程序进行一些测试。到目前为止,我的正常测试没有问题,但现在我一直在尝试设置异步测试。
基本上,如果我尝试保存具有无效属性的模型并且我想检查这是否触发了 Backbone 中的正确“错误”状态,我的服务器 API 会返回一个带有 500 HTTP 代码错误的页面。
我试图以这种方式设置测试:
问题是保存函数的错误回调会覆盖模型中的错误回调,因此触发它的唯一方法是手动执行:
我认为这不是正确的测试方法,因为在我的生产环境中,模型的保存功能没有错误回调,但另一方面我不知道如何告诉 Qunit 等待 ajax 响应来评估测试断言。
有人可以建议我一种使它起作用的方法吗?谢谢!