问题标签 [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.
jquery - 使用 sinon.js 测试 jQuery 延迟对象的“完成”回调函数
我在我的一个主干视图中有这段 CoffeeScript 代码:
我想测试 myCallback 在 done 块中是否被调用。
我不确定如何在 Mocha.js + Sinon.js 中执行此操作。我能够监视 jquery 并检查是否调用了 when 方法:
但是我不能对 done 块做同样的事情,因为如果我理解正确的话,它与 when 方法返回的延迟对象有关。
我也尝试过这样的事情:
但仍然得到:
有任何想法吗?:)
jquery - spy 和 stub 有什么区别?
我刚刚开始使用sinon.js
,我完全被这些术语难住了。我在subview's
渲染方法中使用了存根。但是间谍的解释对我来说并不清楚。谁能解释这两者之间到底有什么区别?
还想知道如果我想测试一个新模型是否已添加到集合中,该方法是什么?
javascript - Javascript:使用 Sinon 模拟构造函数
我正在努力弄清楚如何使用 sinon 来模拟构造函数。我有一个函数,它将通过调用一个接受一些参数的构造函数来创建多个小部件。我想验证构造函数是否使用正确的参数被调用了正确的次数,但我不想实际构造小部件。以下链接似乎解释了一种模拟构造函数的简单方法,但它对我不起作用:
http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
当我对构造函数进行以下调用时:
我收到以下错误:
在 Chrome 中调试时,我看到 MyWidget 出现在 Scope Variables 的 Local 部分中,但是窗口中没有 MyWidget 属性。
任何帮助将不胜感激。
javascript - 如何将 Sinon.JS 间谍函数指定为类定义的一部分?
我正在使用 Require.js 和 Backbone.Marionette 编写一个 Backbone.js 应用程序,并使用带有 Chai、Sinon 和 Sinon-Chai 的 Mocha 对其进行测试。我通常使用Jarrod Overson 的 Backbone Marionette 和 Require.JS TODO 示例作为应用程序结构的参考,以及Jim Newbery 的关于测试 Backbone 应用程序的帖子作为单元测试的参考。
我的问题是尝试测试将Marionette ItemView添加到Marionette Application 对象。我想测试是否添加了 ItemView 的最佳方法是观察它的render()
方法是否被调用。由于 Marionette 提供了默认render()
实现,我认为最好只使用 Sinon spy 进行onRender()
回调。
我使用Squire.JS为我的 ItemView 返回一个存根类,如下所示:
当我通过 Chrome 运行 Mocha 时,我得到了我期望的错误:“预计 spy 至少被调用过一次,但它从未被调用过。” 但是,如果我指定Sinon spy函数作为onRender()
回调,如下图
我收到一条错误消息,指出该called()
方法不是函数。
有没有办法将 Sinon 间谍函数指定为类定义中的方法?或者,是否有更好的方法来测试此代码?我对 JavaScript 相当陌生,所以这可能是一个更普遍的问题,而不是特定于 Sinon 的问题。
任何帮助表示赞赏。
html - 如何在 mocha 上使用 Sinon 模拟 input type="file" 进行 AJAX 测试
我在 Mocha 上进行了单元测试,并且正在通过 AJAX 测试表单提交。
由于您无法<input type="file">
手动填写,并且我正在寻找自动化测试,我需要知道“模拟”此输入的最佳方法是什么,并且仍然能够通过 AJAX 以多部分格式发送它(可以是纯文本“文件”,如 Hello world!)。
我知道我可以手动制作字符串,但我需要<input type="file">
用我的模拟“替换”对象中的值(它仍然可以响应我的模拟FormData
对象)
javascript - 用 sinon 监视 javascript 中的构造函数
我正在尝试在构造函数上创建一个间谍,看看它是否被调用——下面是我的测试。我使用的是 sinon-chai,所以语法是有效的,但是两个测试都失败了。
node.js - 我应该如何监视在另一个对象内部调用的构造函数?
假设我有一个对象,该对象具有创建另一个对象作为其操作的一部分的函数。
Monkey 类在顶部有一个 require Paper.Origami
。
如果我在测试中创建一个 Origami,我可以通过这个测试,但如果我将它留给 Monkey 对象的 create 内部,它将不会通过。我怀疑这是因为两个对象之间的要求路径不同——也许节点不会将它们视为同一个对象。
问题:我可以让sinon
间谍监视Origami
对象内部发生的Monkey
对象的创建吗?
node.js - 断言内部函数调用
我有一个foo.js
看起来像这样的文件:
我想测试当我调用该start()
函数时,会打开一个浏览器窗口。理想情况下,我想使用 Sinon 来存根exec
(这样我们在自动化测试期间实际上不会打开浏览器窗口),并断言它exec
被调用了。我尝试了很多方法,但都没有奏效。例如在foo_test.js
:
我该怎么做呢?
javascript - 使用 Sinon 在 Javascript 中测试私有成员
我开始编写一些 javascript 测试并试图找出检查模块构造函数的私有成员的最佳方法。例如,在下面的示例中,我使用显示模块模式将公共 api 公开给我的模块。我想测试在ajax 请求privateVar
回调期间是否正确设置。$.getJSON
第二个测试it('should update privateVar', ...),
不起作用,因为myModule.privateVar
(故意)不在模块的公共 api 中。
所以,我的问题是,测试这种行为的最佳方法是什么,而不必使 privateVar 成为公共 api 的一部分?有没有更好的方法来考虑这个代码进行测试,或者可能有一种方法可以使用像 SinonJs 这样的东西来监视私人成员?