问题标签 [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 回答
2017 浏览

jquery - Jasmine 2.0 与 Jasmine-Jquery 的兼容性

我在使用 jasmine-jquery 插件运行我的 Jquery 测试时遇到了困难。以下是我采取的步骤:

  1. 宝石安装茉莉花
  2. 茉莉花初始化
  3. 将 jquery 和 jasmine-jquery 添加到 helpers 文件夹
  4. 这是我的存储库https://github.com/shenst1/jasminesample

以下是我按照这些教程推荐的规格:https ://www.youtube.com/watch?v=3Huh44nsZTw

第一个规范按预期通过,但带有 jquery 的第二个规范失败并出现以下错误:

看起来 jquery 匹配器没有正确加载。它似乎正在将对象转换为字符串,而不是检查 html 元素。我尝试使用 Support Jasmine v2.0(版本 1.5.92)中的 jasmine-jquery.js 版本,但失败并出现相同的错误。我是否需要回滚 jasmine 版本以支持 Jquery,或者我只是错过了一些关于如何使其与 jquery 一起工作的内容?谢谢,安德鲁

0 投票
1 回答
5861 浏览

javascript - 干燥茉莉花嵌套描述块

我正在尝试使用 jasmine 测试一些视图代码。当视图对象处于不同的包含状态时,我需要测试某些元素的存在,而不必在每个状态下重复大量代码。

我有一个 NodeView 类,它代表一个带有一些端点的节点,以便允许用户通过一些线将此节点连接到其他节点。每个节点都被放置在一个列(组)中,这样如果这个节点被放置在第一个组中,它就不会显示左端点。如果节点在最后一个组中,它将不会显示正确的端点。我可以使用 jasmine 中的嵌套描述块来管理这种情况:

到目前为止一切正常。当我们有其他不同的状态时,麻烦就开始了,在这种情况下,这个状态是允许输入。这是一个布尔值,指示用户是否可以画线。如果这个布尔值是真的,那么节点必须包含一个“输入”类以及其他东西。这是代码(再次渲染函数):

好的,我在构建节点时测试生成的 html 标记(没有显式调用 render 方法),但它在内部完成了这项工作。构建对象时调用渲染(构造函数调用渲染),这就是我没有在代码中显式调用 node.render() 的原因。

测试这些不同的状态需要测试包括所有可能的情况:

  • 第一组——输入
  • 最后一组 - 输入
  • 第一组 - 无输入
  • 最后一组 - 无输入

如果我添加另一个布尔状态,那么我将有 8 个场景,依此类推。我尝试使用共享示例http://pivotallabs.com/drying-up-jasmine-specs-with-shared-behavior/对其进行一些清理

上面的行没有按预期工作,因为输入状态测试是在没有设置输入状态的情况下完成的,所以,我们真正测试的是:

  • 独立于组的输入和无输入
  • 第一组和最后一组不包括输入测试用例,但包括 model.input 属性

这并不是真正测试所有 4 个案例。

关于如何改进这一点以避免指数重复代码的任何想法?

非常感谢。

0 投票
1 回答
7371 浏览

javascript - 在 AngularJS 指令模板中的元素上测试 focus()

鉴于以下指令

我已经测试了焦点观察器在浏览器中的工作,但我希望能够在单元测试中触发它。这是我尝试过的,但它不起作用。

我可以看到我通过 find 调用正确地进入了输入框,并且我希望该代码能够触发输入框上的焦点事件,但没有发生任何事情。我在这里想念什么?

0 投票
1 回答
739 浏览

angularjs - 我应该在测试时将原始或编译/链接的元素附加到正文吗?

当我只使用编译和链接设置测试时,该指令被触发,但该元素仅存在于边缘,因为如果我没有明确地将其添加到 DOM,则下面的测试将失败。

我只是想知道我是否应该将预编译添加angular.element(...)到 DOM 或已编译/链接中linkFr(scope),或者我是否要解决这一切都错了。

测试设置

测试

只要我调用其中一个$('body').append(el);$('body').append(element);所有测试通过,否则它们都会失败。

0 投票
1 回答
909 浏览

javascript - How do I use event spies on angular element in the dom?

Setup

Here I am creating, compiling, linking and appending the element then setting up the event spy.

Initial tests

These pass and confirm that the element exists, is in the DOM and is visible.

Event Spy Tests

What am I doing wrong? Why are those event spies saying click has not been triggered.

Additional Info

I have an element.bind('click', ... set up in the directive I am testing and I added a console.log inside of it that fires when I simulate the click event.

0 投票
1 回答
331 浏览

angularjs - 为什么 jasmine-jquery 事件间谍不一致?

为什么相同的测试用例在第二次运行时会失败?

设置

情况1

第一种情况按预期工作。

案例 2(与案例 1 相同)

即使案例是第一个案例的精确副本,第二个断言也因某种原因失败。

0 投票
1 回答
836 浏览

javascript - 如何从javascript中的命令行获取hostUrl

我想知道如何在 JavaScript 中获取从命令行传递的 hostUrl

在 Java 中,可以键入 System.getProperty("hostUrl"); 为达到这个。JavaScript中有什么替代方法?

0 投票
4 回答
6003 浏览

javascript - javascript 测试用例中的 BeforeAll 和 AfterAll

我想在所有测试之前做点什么,然后呢?组织代码的最佳方式是什么?例如:备份一些变量 -> 清除它们 -> 测试一些东西 -> 恢复备份。'beforeEach' 和 'afterEach' 太贵了。谢谢!

0 投票
3 回答
10645 浏览

jasmine - 带有 Jasmine 2.0 的 jasmine-jquery loadFixtures 将不起作用

我花了大约一天的时间来调试这个,我很茫然。jasmine-jquery 2.0.2 中似乎有些东西不起作用。

我正在从 Jasmine 1.3.1 和 jasmine-jquery 1.5 更新到最新版本。根据我尝试加载固定装置的方式,我遇到了各种失败。在我调整 jasmine-jquery 以向 ajax.fail() 方法提供参数后,我得到“无法加载 Fixture: ./ExposureWorksheetFixture.html (status: parsererror, message: Invalid XML”。

我的另一个效果是,当我调整示例 jasmine runner 并进行测试时,它会显示“零固定装置,零故障”。当我引用 jasmine-jquery、jquery 1.10.2 并尝试设置固定装置时,就会发生这种情况。如果我删除该操作(但留下参考),则该示例有效。

我尝试加载固定装置时遇到的另一个错误是“(状态:错误,消息:访问受限 URI 被拒绝)”。这似乎发生在它实际尝试加载位于指定位置的文件时。我看到另一个问题指出 jquery 需要一个真正的 Web 服务器来加载文件,并且它不喜欢本地文件路径,但我对这些库的旧版本没有这个问题。这发生在 Firefox 中。我TypeError: Object doesn't support this property or method在 IE 8 中得到一个。在 Firefox 中,我得到Error: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: A network error occurred.).

这是一些示例代码...

在 PlayerSpec.js 中:

在 SpecRunner.html 中,注意对 jquery 和 jasmine-jquery 的额外引用:

跑步者的输出(第一次测试 - 所有测试都失败)

编辑 2/13/14 @ 8:32pm EST:我刚刚尝试只更新 jasmine-jquery,当我这样做时一切都失败了(Jasmine 1.31)。我在想这个库一定有什么问题:(

0 投票
2 回答
1484 浏览

javascript - Testing results of an initial ajax request with Jasmine 2.0

I am testing a Backbone View with Jasmine 2.0. The View makes an initial ajax request on load to populate its form field with values. I want my Jasmine test (in the it function below) to run only after those values are received.

The test currently fails because it seems the ajax request is received after the test runs, even though I am stubbing the ajax request.

How should I be writing this test?