问题标签 [jasmine-maven-plugin]

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

javascript - 通过 Jasmine 进行测试时,RequireJS 模块填充程序不起作用

我有一个JavaEE 项目,它使用 RequireJS 来加载一些第三方框架。这些框架之一是 OpenLayers3。Openlayers3 本机创建一个全局“ol”变量。但是,OpenLayers3 被编写为与 AMD 兼容,并通过 RequireJS 作为模块工作。我还使用了一个名为“olLayerSwitcher”的OpenLayers3 插件,它没有针对 AMD 进行优化。相反,它取决于全局的“ol”变量。

我的要求配置如下所示:

该项目使用 Backbone 并包含一个路由器模块(/src/main/webapp/js/controller/AppRouter.js):

Router 模块依赖于 View 模块(/src/main/webapp/js/views/MapView.js):

View 模块尝试引入 OpenLayers3 以及第三方 OpenLayers 插件。

构建和部署项目后,它在浏览器中运行良好。加载 View 模块后,OpenLayers 和第三方插件就可以正常加载,并且一切都可以正常渲染。

然而,当我尝试在 Jasmine 中进行测试时,这一切都崩溃了。

对于 Jasmine,我使用的是 Jasmine-Maven 插件。它与我的库一起引入 JasmineJS、PhantomJS 和 RequireJS 并运行我的规范。问题是当通过 Jasmine 运行时,MapView 模块尝试加载 OpenLayers3 库以及第三方插件 (olLayerSwitcher) 但由于第三方插件找不到“ol”而失败。

考试:

茉莉花的错误:

第 9 行 ol3-layerswitcher 插件的相关部分是:

所以它确实取决于“ol”在这一点上的存在。

Jasmine-Maven 插件创建自己的规范运行器 HTML,相关部分如下所示:

我能够创建一个客户 HTML 运行器,但不确定问题出在哪里,所以我不知道需要更改什么。

这似乎不是 PhantomJS 问题,因为我可以在浏览器中加载测试并且遇到同样的问题。

如果有人对这里可能发生的事情有任何想法,我将不胜感激。我真的不想破解第三方模块以将其转换为 RequireJS 模块,因为 Jasmine 测试是完全实现这一点的最后一站,我完全被困在这里。

我正在使用 Jasmine 2.3.0 和 RequireJS 2.1.18

我很抱歉没有链接更多,但这是一个新帐户,我没有足够的代表。

0 投票
0 回答
571 浏览

selenium - 在为 Edge 运行 Selenium 自动化测试时,MicrosoftWebDriver Server for Edge 无响应

我正在尝试使用 Jasmine maven 插件为 Microsoft Edge 浏览器运行 selenium web 测试。所有必需的 jars(Selenium 边缘驱动程序)和用于 Edge 的 microsoftWebDriver 都已就位。但是,我在运行测试时遇到了一些超时。下面是堆栈跟踪。

运行测试时,边缘浏览器成功启动,会话启动。但是,在多次请求之后,会抛出超时异常。所以,我猜 webdriver 服务器没有按预期响应。下面是服务器启动的跟踪。

Selenium 边缘驱动程序及其依赖项是最新的。任何解决此问题的帮助表示赞赏。提前谢谢。

0 投票
1 回答
669 浏览

javascript - Jasmine 测试中的“spyObj.plan 未定义”

我有一个名为 doLogin 的方法,它从另一个对象调用另一个方法 login。

我正在尝试使用 jasmine 测试当我调用主函数时是否真的调用了函数内登录。所以我在这两个函数上放了几个间谍,并使用“ andCallThrough( )”进入实际的实现。但是当我调用第一个(doLogin)函数时

我收到此错误: TypeError:无法读取未定义的属性“应用”

用茉莉花跟踪到这个电话:

谁能告诉我什么是spyObj.plan属性,为什么它是未定义的?

**编辑:查看 jasmine.js 源文件,我知道 plan 属性是间谍将要调用的函数,具体取决于它的调用方式。 jasmine.js.source

0 投票
0 回答
529 浏览

maven - 在当前项目中找不到前缀“茉莉花”的插件

在当前项目和插件组[org.apache.maven.plugins, org.codehaus.mojo] 中没有找到前缀“茉莉花”的插件,可从存储库 [local (/Users/patthia/.m2/repository) )、中央 ( http://repo1.maven.org/maven2/)、sonatype-releases ( http://oss.sonatype.org/content/repositories/releases)、clojars.org ( http://clojars.org /repo ),运行时出错

在我的项目中。运行此命令时,我在正确的文件夹中。我已经验证了我的插件依赖项和配置。这是我的 pom.xml 中的插件配置

0 投票
1 回答
490 浏览

javascript - Jasmine Maven 插件:自定义指令测试不起作用(注入器:nomod)

我已经在互联网上搜索了一段时间的答案。它涉及在 Maven 构建中使用存储在 html 文件中的外部 templateUrl 测试 AngularJS 自定义指令。(让它在 Karma 上成功运行之后)

有很多关于如何使用外部 templateUrl 进行自定义指令测试的信息和答案在 Karma 上工作,但我发现很少或根本没有适用于 Jasmine Maven 插件。我找到的只是http://searls.github.io/jasmine-maven-plugin上的 API和概述描述。没有太多深入的教程或指南,也没有其他人遇到过的问题,这与在 Maven 构建上测试自定义指令直接相关。

首先,我必须解决问题,让它在 Karma 上运行,就像我们第一次做的那样。我通过预处理解决了它,我将首先解释设置(使用伪文件和路径):

karma.conf.js(为这个问题隐藏不相关文件的简化版本)

专门为在 Karma 中工作的自定义指令测试添加的配置是

  • 预处理器
  • ngHtml2Js预处理器
  • 插件下的“karma-ng-html2js-preprocessor”
  • myDirective.js 和 myDirectiveTemplate.html 文件下。

自定义指令中的 templateUrl 属性是 'myModule/directive/myDirectiveTemplate.html',

我不认为与该问题相关的 html 文件的内容。我没有在上面的代码中包含 angular-mocks.js,但它包含在实际工作中。

在茉莉花测试中,我注入了预处理指令:

然后我在每次测试之前编译指令:

到目前为止,一切都很好,并且测试正在发挥作用。

现在出现了真正的问题:使用 Maven 构建使其工作。

我们使用 jasmine-maven-plugin 进行的设置如下:

pom.xml

myDirective.js 是这里的新文件。

(我刚刚发现'jsSrcDir'在我写这篇文章时已经过时了,但鉴于我们之前没有遇到任何问题,我假设'jsSrcDir'和'jsTestSrcDir'的路径与'preloadSources'下的文件重叠。仍然,这是我们到目前为止所拥有的,所以我会添加它们以防你碰巧在那里看到相关的东西)

我还尝试在 package.json 中添加一些额外的内容,以尝试使构建工作。

包.json

底部的“karma-ng-html2js-preprocessor”是新增功能,但其他设置由我的同事完成,我不一定知道后台运行的内容(例如 phantomjs)

问题

如果我尝试 maven build,这就是我在 myCustomDirectiveTest 中的每个测试得到的结果

当我遭受坏业力(双关语)时,我对此很熟悉,注入器找不到模块“directiveHtmlTemplate”。现在已经为 Karma 修复了,但我该如何为 jasmine-maven-plugin 执行此操作?

我知道 specRunners 的存在,以及使用自定义运行器的选项(customRunnerTemplate、customRunnerConfiguration),但是 jasmine-maven-plugin 主页上的简要说明并没有让我变得更聪明。

其他细节: - 在将预处理器添加到 package.json 之前运行以下命令:

$ npm install karma-ng-html2js-preprocessor --save-dev

这就是我不知所措的地方:我从这里继续往哪里走?如何让 jasmine-maven-plugin 进行预处理并将 html 文件添加为命名组件“directiveHtmlTemplates”,就像我在 Karma 中一样?

0 投票
1 回答
155 浏览

maven - Jasmine maven 插件解析测试结果 Atlassian Bamboo

所以我设法让 jasmine maven 插件与 maven 和我们的 js 单元测试一起工作。

一切运行良好,但我发现当有一个测试失败时,竹子会说它失败了,但错误是“没有找到失败的测试,可能发生编译错误”。

我试图通过专门指定所需的文件夹 JUnit 解析器来让它解析 TEST-jasmine.xml 结果,并使用 pom.xml 中的 jasmineTargetDir 标记让 jasmine 写入该文件夹,但它仍然没有找到正确的结果。Jasmine 忠实地将测试结果写入文件夹,但貌似 JUnit 不解析呢?

关于为什么以及如何解决问题的任何线索?

0 投票
1 回答
724 浏览

selenium - 使用 WebDriverManager 和 jasmine-maven-plugin 来使用 Chrome Headless

我有一个配置了 jasmine-maven-plugin 的 Maven 项目来运行 javascript 测试。我想在不下载和设置驱动程序路径可执行文件的情况下从 Phantomjs 切换到无头 Chrome。我发现 WebDriverManager 可以提供帮助,但似乎可以在以下类中以编程方式开始下载:

我已将 pom.xml 配置为使用驱动程序(如此处所述),现在是否可以将 pom.xml 配置为也使用 WebDriverManager 来处理 ChromeDriver 下载而不配置 webdriver.chrome.driver 属性?

我什至想使用不同的 jasmine 的规范运行器模板,但它似乎可以只是一个简单的StringTemplate字符串。

谢谢!

0 投票
0 回答
132 浏览

javascript - 这个 Jasmine 单元测试模拟调用是如何工作的?

这两者有什么区别:

第一个版本:

第二个版本:

上面的两个测试函数应该测试一个ajax调用是否也最终更新了#data-table带有文本'buzz'的id的HTML元素,用于表中的第一行和第0个数据元素。第一个是导致我的 Jasmine maven 插件测试失败并出现难以调试的奇怪错误,因为它导致 Jasmine maven 插件有时成功有时失败。第二个似乎没有失败。

我不熟悉第二个电话的工作方式。它似乎在调用 createAjaxCall(),它实际上并没有调用该方法,但是使用的模拟调用$.ajax.calls...是实际调用它的方法。那里到底发生了什么?

这是错误(我使用的是 Jasmine Maven 插件版本 2.2)。它期望 token },但我检查了一下,似乎并非如此,没有任何遗漏}