问题标签 [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.

0 投票
1 回答
1075 浏览

javascript - 使用带有 nodeunit 的 sinon 模拟

我正在学习将 sinon 与nodeunit一起使用,专门用于模拟。推荐的方法是使用sinon-nodeunit。根据文档,应该可以通过每个测试函数mock的参数方法使用模拟。test

但是,这似乎不起作用。如果我nodeunit在包含以下内容的文件上运行 -</p>

——我明白了:

sinon我已经sinon-nodeunit通过npm install.

0 投票
1 回答
616 浏览

javascript - SinonJS 假计时器不适用于 QUnit

我正在使用 SinonJS 和 QUnit 运行以下代码:

但是测试失败了,看起来 jQuery 使用的是真正的时钟而不是假的。

我正在使用 Chrome 12.0.742.122。

有任何想法吗?

谢谢

0 投票
3 回答
4750 浏览

javascript - 如何在 Jasmine 单元测试中使用 Sinon 对 jQuery 动画进行假时间?

我有一个 1 秒的 jQuery.animate操作,在页面加载后 5 秒启动。我在我的 Jasmine 单元测试代码中设置了一个 Sinon 计时器,并在 7 秒的滴答声后进行测试,以查看动画后的属性是否与它们应有的一样。

它不能正常工作,因此我在 Jasmine HTML 测试页面上放置了动画本身的一个实例,以便更好地了解发生了什么。

  • 在 Firefox 和 Chrome 中,页面加载,动画函数被调用,单元测试立即失败,然后(也立即)动画可见。

  • 在 IE、Opera 和 Safari 中,页面加载,动画函数被调用,单元测试立即失败,动画从不可见。

我希望的是以下(在所有浏览器中):

  • 页面加载完毕,调用动画函数,动画瞬间完成,单元测试立即成功。

查看Sinon的文档,它的假计时器涵盖了以下过程: setTimeout, clearTimeout, setInterval, clearInterval,Date

我不知道 jQuery 的动画是如何工作的,但我想它是使用 CSS 来过渡的,而 CSS 过渡并没有包含在 Sinon 中useFakeTimers,所以我想这就是问题所在。但是,如果我对这个问题是正确的,我仍然需要一个解决方案。

或许我应该试试诗乃以外的东西?Jasminewaits()在这个测试中表现完美,但对于像我这样没有耐心的人来说非常不切实际。

还有其他建议吗?请记住,我是 JS 单元测试的新手,所以模糊的答案会让我感到困惑,而不是帮助我。;o)

0 投票
2 回答
1822 浏览

javascript - 如何使用 Sinon.JS 存根 google.maps 库?

我在这样的 Backbone 模型中使用 google.maps 库(coffeescript):

在我的测试中,每当我尝试实例化 aRoute时,显然都会遇到问题。我怎样才能google在我的测试中存根,这样它就不会导致这个问题?

0 投票
6 回答
32164 浏览

mysql - 你如何在 Node.js 中模拟 MySQL(没有 ORM)?

我正在使用Node.jsfelixge 的node-mysql客户端。我没有使用 ORM。

我正在使用 Vows 进行测试,并希望能够模拟我的数据库,可能使用 Sinon。由于我本身并没有真正的 DAL(除了node-mysql),所以我不确定如何去做。我的模型大多是带有很多吸气剂的简单 CRUD。

关于如何做到这一点的任何想法?

0 投票
3 回答
22088 浏览

javascript - 存根一个 jQuery 选择器调用?

我正在尝试更好地对我的 JavaScript 进行单元测试。我有以下代码:

我的测试运行器在页面上没有#category输入,那么我将如何在此处存根/模拟 jQuery 选择器?我查看了jasminsinon文档,但无法弄清楚如何让它们在这里工作,因为它们的存根对对象进行操作,但事实$并非如此。

0 投票
2 回答
33627 浏览

testing - Sinon JS“试图包装已经包装的ajax”

我在运行测试时收到了上述错误消息。下面是我的代码(我使用 Backbone JS 和 Jasmine 进行测试)。有谁知道为什么会这样?

0 投票
2 回答
4287 浏览

javascript - Sinon 似乎没有监视事件处理程序回调

我正在使用 Jasmin、Simon 和 jasmin-simon 测试主干视图。

这是代码:

实际上,我所有的测试都通过了,只有一个。我想检查addMessage每当我将项目添加到this.collection.

如您所见addMessage,确实被称为。(它记录到控制台并按this.messageView应有的方式调用。我在监视addMessage电话时错过了什么?

谢谢,维克多

0 投票
1 回答
1586 浏览

javascript - Backbone.js 解析方法

我正在尝试使用sinon.js 和 jasmine.js对我的第一个骨干网应用程序进行单元测试。

在这个特定的测试用例中,我使用 sinon.js fakeServer 方法返回具有以下结构的虚拟响应。

因此,当我在下面的测试用例中实际调用 fetch 调用时,它会正确返回 3 个模型。在集合的 parse 方法中,我尝试删除根 'tasks' 键并仅返回对象数组,这在主干.js 文档中有所提及。但是当我这样做时,没有模型被添加到集合中,并且 collection.length 返回 0。

任务集合

你能告诉我我在这里做错了什么吗?

0 投票
1 回答
939 浏览

javascript - 这是在 Node 中进行依赖注入的正确方法吗?

我最近开始了一个节点项目,作为一名测试驱动开发人员,我很快就遇到了我全新模块的依赖注入问题。以下是我认为我应该进行依赖注入的方法。重要的是要注意我使用vows作为 BDD 框架并用Sinon扩展它。

我的模块:

我的测试:

你认为这是正确的方法吗?我喜欢这个解决方案,因为当你使用模块时它不需要更多(比如在 require 语句后添加“()”)。