问题标签 [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 投票
2 回答
10124 浏览

coffeescript - 用于 window.location.search 的 Sinon.JS 存根

我正在尝试测试一个调用 window.location.search 的简单函数。我试图了解如何存根此调用,以便我可以返回我选择的 url。

功能:

测试用例:

我最初的尝试是直接返回一个值,如下所示:

这当然行不通。我认为我没有正确指定存根,但它显示了我的意图。

任何有关如何解决此问题的想法将不胜感激。

0 投票
2 回答
13386 浏览

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 或执行时需要额外的复杂夹具的事情。

0 投票
1 回答
1097 浏览

backbone.js - Qunit + Sinon 测试 Backbone 的模型事件

这些天来,我正在尝试为我的第一个严肃的 Backbone 应用程序进行一些测试。到目前为止,我的正常测试没有问题,但现在我一直在尝试设置异步测试。

基本上,如果我尝试保存具有无效属性的模型并且我想检查这是否触发了 Backbone 中的正确“错误”状态,我的服务器 API 会返回一个带有 500 HTTP 代码错误的页面。

我试图以这种方式设置测试:

问题是保存函数的错误回调会覆盖模型中的错误回调,因此触发它的唯一方法是手动执行:

我认为这不是正确的测试方法,因为在我的生产环境中,模型的保存功能没有错误回调,但另一方面我不知道如何告诉 Qunit 等待 ajax 响应来评估测试断言。

有人可以建议我一种使它起作用的方法吗?谢谢!

0 投票
3 回答
3185 浏览

testing - 使用 Jasmine 和 Sinon 测试主干模型 - Object # has no method 'spy'

I am trying to learn how to use Jasmine and Sinon for testing a Backbone application, and I was following

I am trying to learn how to use Jasmine and Sinon for testing a Backbone application, and I was following this tutorial. Nevertheless, I ran into a problem that I don't know how to solve.

Most likely the solution is simple, but I need some guidance ...

In my project.spec.js file this is the code that is giving the problem:

And this is the specific error that can be seen in the browser:

In addition to the sinon.js library, I have installed the jasmine-sinon.js library (both are in the vendor/assets/javascripts folder and are included in the application.js file).

Thank you, Alexandra


0 投票
1 回答
765 浏览

ember.js - Ember 数据延迟加载

我正在为 ember 控制器编写 qunit 测试。在我的真实应用程序中,我从另一个页面路由并获取数据。但是,在编写测试时,我无法从 Ember 数据存储中获取数据,因为它发送异步调用并且测试运行并失败,直到它获取数据。有什么方法可以强制 ember 商店在同一个运行循环中返回数据?或者有没有其他方法可以做到这一点?

0 投票
1 回答
3452 浏览

javascript - 与 Jasmine 内置的 Spys 相比,使用 Sinon.js 有什么优势?

我正在拼凑一个 jsTestDriver/Jasmine 环境来测试我们的前端代码,并且我看到很多对 Sinon.js 的引用,用于独立(或插入)间谍。有人能描述一下 Sinon.js 带来了什么 Jasmine 没有用于测试 UI 的东西吗?

0 投票
1 回答
708 浏览

javascript - 如何对将在 CSS transitionEnd 事件后执行的 JavaScript 进行单元测试

我有引导模式窗口。使用 qunit+sinonjs(假计时器),一个元素会留在页面上(div class='modal-backdor'):

查看twitter-bootstrap(第 95 行),触发了一个 transitionEnd 事件。如何测试事件触发后将执行的代码?

0 投票
1 回答
9931 浏览

javascript - 如何在dojo中加载不是模块的JS文件?

我首先要说我是一个 javascript 和 dojo 菜鸟。但是,我一直在使用 DOH 框架为我的 js 代码编写一些单元测试。我注意到的一件事是该框架似乎没有办法模拟 XHR 请求。所以我决定用 sinon 来嘲讽。

这是我的问题,我无法将 sinon 代码成功加载到我的 dojo 模块中。这是我尝试过的:

我将测试包映射到正确的目录,并且可以从那里加载其他文件。那么我该如何加载sinon呢?

0 投票
1 回答
1938 浏览

javascript - Sinon Fake 服务器没有自动响应

嗨,我正在使用 fetch 测试一个集合,当我调用它时,只有在调用 server.response 后,假服务器才得到响应,我得到了想要的结果。

这是为什么 ?

我的代码

0 投票
2 回答
30606 浏览

javascript - 在 sinon.js 中存根和/或模拟一个类?

我为我的应用程序创建了一个数据库包装器,如下所示。为了测试它,我显然想替换实际的数据库库。我可以创建一个新类来模拟该query方法并在那里捕获所有输入,但使用sinon.js似乎更合适,但我将如何使用它?
是我应该使用mockstub功能吗?sinon.js