问题标签 [jasmine-jquery]

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 回答
132 浏览

ruby-on-rails - 无法加载 jasmine-jquery

我将jasmine-jquery-rails gem 添加到我的 rails 项目并将其添加到spec.js.coffee

在浏览器中,我可以看到jasmine-jquery文件以及其他文件(jquery 等)

但这种构造

由于错误而不起作用

如何解决这个问题?谢谢

0 投票
1 回答
2638 浏览

javascript - 在使用夹具的 Jasmine 测试中绑定事件处理程序的最佳实践?

尽管 StackOverflow 上有这两个相关的问题,但我还没有找到令人满意的答案,所以我发帖是为了了解 Jasmine-jQuery 用户中是否存在公认的最佳实践。

基本问题很简单,两个相关问题中涵盖了两个示例:

  • 在我的 Javascript 中,有一个setup()函数可以将事件处理程序绑定到页面上的各种选择器,如$('#someDiv').click(someHandler); 这个函数被传递给$(document).ready

  • 在我的 Jasmine 测试中,我使用代表页面各个提取部分的 HTML 固定装置来测试这些元素上的 AJAX 交互(我正在运行 jasmine-rails “服务器”版本,您可以在浏览器中查看 Jasmine 测试报告)

当然,问题在于setup()尝试绑定处理程序的选择器在加载夹具之前不会存在。结果,在 Jasmine 测试中显式触发的事件将不会被夹具中的 DOM 元素拾取,因为绑定该处理程序的函数已经运行$(document).ready

如果只有 Jasmine 能以某种方式将调用延迟到$(document).ready加载装置之后,我会很高兴。但显然不能。

从上面的两个 StackOverflow 问题中,我收集了各种方法来解决这个问题,但都不能令人满意:

  1. 将绑定代码复制setup到 HTML 固定装置本身中。这是非 DRY 的,几乎可以肯定会导致夹具与现实不同步,而且夹具应该代表不显眼的 JS,因此不能混合代码和标记。

  2. setup在需要它的测试用例中显式调用该函数。这在简单的情况下有效,但如果setup做非幂等的事情就会失败。

  3. setup中,使用类似的东西$(document).on('click', '#someDiv', someHandler)代替我上面显示的代码。(我在 jQuery 1.10.1 上。)我实际上尝试过,但它不起作用:即使加载的夹具包含匹配的元素#someDiv,在该元素上触发“点击”也不会导致someHandler被调用。即使它确实有效,它也很混乱,因为(如果我理解正确的话)this调用处理程序时的值将反映实际处理事件的元素,不一定是第一次收到它的元素。

  4. setup中,使用类似的东西$('#someDiv').live(someHandler),但live在 jQuery 1.7 中已被弃用并在 1.9 中被删除。

我是否还缺少其他一些不需要更改工作代码以适应测试环境并且不需要违反 DRY 的方法?

0 投票
1 回答
17722 浏览

jasmine - 茉莉花间谍不被称为

我在 Jasmine 中进行间谍活动时遇到了一些麻烦

我想检查是否使用 jasmine spy 和 jasmine jquery 在滑块上单击了链接。

这是一个简化版本:

我有一些链接作为 html 固定文件的一部分。

滑块:

规格文件:

测试失败。但是“我已被点击”已记录到控制台,因此正在调用该方法。

如果我这样做,则测试通过:

所以我的问题本质上是:

  1. 我是否以错误的方式测试这种类型的东西?
  2. 为什么间谍没有记录该方法已被调用的事实?
0 投票
1 回答
1519 浏览

javascript - jasmine jquery - 使用数据属性监视事件

如果正确触发以下事件,我很难找到使用 jasmine-jquery 进行测试的正确方法

基本上我想编写 2 个看起来有点像这样的测试(所有 ????? 部分对我来说都是一个谜):

希望有人可以帮助我解决这个问题 =) 干杯

0 投票
1 回答
1883 浏览

javascript - Jasmine - jasmine-jquery spyOnEvent

I'm trying to test a widget i've created that does some stuff with scrolling. I'm using Jasmine and jasmine-jquery for testing but I'm getting some odd results.

I want to test that my widget successfully triggers an event when the page scrolls in a specific way. I've simplified things here in case it's my widget causing the problem, so I'm just trying to test that the scroll event has been triggered on the window.

In the console I get the following

I'm not sure what to make of this as the order of events is odd. It runs twice? The scroll event is only triggered after the expect?

I've debugged it in the browser and you can see the same thing happening. Test failure first then browser events triggering.

I've looked at Jasmine's asynchronous features but I'm not sure what I'm waiting for?

Any help would be greatly appreciated. Thanks

0 投票
1 回答
9483 浏览

javascript - 茉莉花 jquery 测试以检查是否已将正确的参数传递给方法

我是 javascript 测试的新手。我正在使用 jasmine,需要测试是否已将正确的参数传递给方法。

这是我的方法:

我收到以下错误。

如果我在期望之前添加这一行(这似乎是错误的,因为我指定了应该由测试识别的正确参数)

我收到以下错误:

有人可以告诉我编写上述测试的好方法吗?

0 投票
1 回答
374 浏览

ruby-on-rails - 在 Rails 中运行无头 jasmine 测试时出错

我已经设置了一个 rake 任务来在构建服务器上运行无头 jasmine 测试并以 junit 格式输出结果。这是任务:

当我运行这个我得到这个错误:

我正在使用 rails 3.2.13、jasmine 1.3.2、headless 1.0.1、rspec 2.14.1 和 Jasmine-jQuery 1.5.8

我认为这可能类似于这个人遇到的问题: TypeError: jasmine.getEnv().currentSpec is null

0 投票
1 回答
7095 浏览

javascript - 茉莉花 预期的间谍 myLinks 已被称为错误

我很难理解 jasmine spyOn 功能。我写了一个简单的函数并测试我的方法是否被调用:

这是我的测试:

这将返回以下失败:

我在这里做错了什么?

0 投票
2 回答
12392 浏览

jquery - Jasmine jQuery:使用 toBeHidden() 和 toBeVisible()

我需要帮助使用 jQuery-Jasmine 的toBeHidden()toBeVisible()方法。

当用户选中一个复选框时,一个文本字段应该向下滑动 - 取消选中它会向上滑动。页面加载时文本字段被隐藏。

该代码在我的应用程序中运行良好,但我对我在测试中得到的结果感到困惑。

前两个正在工作 - 检查该字段是否默认隐藏并在第一次更改时可见:

但是当复选框未选中时,文本字段在真实版本中向上滑动,但在我的测试中失败:

我也试过:

有谁知道我做错了什么或者知道我还需要做些什么来帮助 Jasmine 看到文本字段向上滑动?

0 投票
1 回答
286 浏览

jquery - 带有 jQ​​uery 对象属性的 Backbone.js 视图的 Jasmine 固定装置

我正在尝试测试将属性设置为 jQuery 对象的 Backbone 视图。除了设置为 jQuery 对象的属性之外,我可以测试视图中的所有属性。

我尝试在实例化视图之前加载一个夹具,但没有找到任何 dom 元素。当直接使用 jQuery 进行断言时,我也能够成功使用固定装置。我只是无法准备视图锁定所需的 dom。

在下面的示例中,规范失败,这些是我通过控制台检查时最终得到的值:

为此类测试设置 dom 的正确方法是什么?这是完全错误的方法吗?这不是实际的代码,而是一个相当接近的例子。


骨干视图


型材夹具


茉莉花规格