问题标签 [grunt-contrib-jasmine]

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

gruntjs - Grunt Jasmine“无法调用未定义的方法“加入””

刚刚使用 grunt 0.4.1 升级到 grunt-contrib-jasmine 0.6.0。

测试曾经有效,但现在我得到了:

0 投票
1 回答
127 浏览

gruntjs - Jasmine 测试之间的差异:浏览器与 PhamtomJS

我正在使用 grunt-contrib-jasmine 插件运行 BDD 测试。当我生成 _SpecRunner.html 并通过 Chrome 运行测试时,一切都很好。当我通过 PhantomJS 运行测试时,我收到指示 jQuery 未加载的错误消息。

我正在测试的文件使用 LABjs 来加载 jQuery、jQueryUI 和一些其他依赖于它们的文件。此标记将放置在第三方站点上,因此需要此脚本来加载 jQuery。

假设 loadJS 成功加载了 LABjs。就像我说的,当我通过浏览器对该文件运行测试时没有错误,但是通过 PhantomJS 使用 grunt-contrib-jasmine 在我的任何测试完成之前我收到以下错误:

TypeError: 'undefined' 不是函数(评估 '$.publish("foo")')

产生的代码如下:

我最初的想法是 PhantomJS 与 LABjs 脚本加载器不兼容,或者代码被“评估”但 PhantomJS 在错误的时间。窥探 grunt-contrib-jasmine、jasmine 和 phantomjs 代码并没有让我有所收获。

任何评论表示赞赏。

0 投票
2 回答
3867 浏览

javascript - 如何让 Grunt-Contrib-Jasmine 执行规范和加载依赖项?

项目是:Backbone + Require + Underscore + Grunt + Grunt-Contrib-Jasmine + Grunt-Lib-PhantomJS

所以我一直在与两个严重的问题作斗争。我知道 phantomjs 运行正常等等,因为如果我包含我的应用程序 src 文件,我会遇到大量运行时错误。我什至已经正确地订购了 deps,这样 Backbone 就不会因为_没有被定义等而呕吐。

1)当我包含我的应用程序 src 时,我收到can't find variable: define所有源文件的错误。我已经尝试将需求放入src[]而不是vendor[]甚至尝试加载其中包含 deps 的 RequireJSConfig.js。

2)这是紧缩器:我很确定我正确地指向了我的规范文件。如果我只指向一个 test,它仍然会说No Specs Executed. Is there a configuration error?In my case, I just point at my UserModelUnitTest.js,这很简单。它不执行。我要疯了!

规范(UserModelUnitTest.js):

这是我的目录结构

这是我的 Gruntfile / Jasmine 配置

但我确实有规格!!!!

0 投票
0 回答
170 浏览

gruntjs - 带有 grunt-contrib-jasmine 测试的 Travis-CI 给出误报

在与 Travis-CI 集成后,我注意到当规范文件由于某种原因引发错误时,可能会出现误报。

travis 上的所有文件

但是当幻象启动时,其中一个规范失败了,这只发生在 travis 中。我和其他同事可以签出一个新的 repo 并顺利运行相同的 grunt 任务。

这个错误被吞下,其他规范文件被运行,如果它们都通过了,travis 认为一切都很好。

我们有什么办法来对抗这种情况?基本上整个规范文件都不会加载或运行,但我们有一个 build:passing 图像。我希望能够信任 CI 而不必查看输出。

我可以在本地使用 grunt travis 运行 74 次测试,但是在 travis 上运行时它会以 55 次通过。

0 投票
1 回答
972 浏览

javascript - 有什么方法可以用 grunt-contrib-jasmine 输出规范运行器?

所以我在 PhantomJS 中有 grunt-contrib-jasmine 运行规范。有没有办法配置它,所以它总是输出 _specRunner.html (在浏览器中运行)而不是只在出现错误时输出?

我在文档中看到了这个,但是如何配置这个标志?

标志

名称:构建

打开此标志以构建 SpecRunner html 文件。这在对模板进行故障排除、在浏览器中运行或作为监视链的一部分时很有用,例如

0 投票
1 回答
418 浏览

gruntjs - Grunt Jasmine 配置

在 Jasmine 的以下 Grunt 配置中,该pivotal属性是做什么用的?

是为了“命名空间”你的测试吗?

0 投票
1 回答
475 浏览

javascript - 测试通过 Jasmine 但在 grunt-contrib-jasmine 中失败:document.getElementsByClassName

当我通过网络浏览器(safari 或 chrome)运行该测试时,该测试通过但通过 grunt-contrib-jasmine 失败。

奇怪的是 document.getElementsByClassName('video').length = 1,但是 document.getElementsByClassName('video')[0] === undefined

任何帮助表示赞赏!

0 投票
2 回答
1070 浏览

javascript - 如何使用 grunt-contrib-jasmine 制作 jasmine-ajax

我正在尝试使用jasmine-ajax 库来模拟带有grunt-contrib-jasmine 的ajax 请求,但似乎 jasmine 无法找到该库(它说 jasmine.Ajax 未定义)。

我的咕噜声文件:

我下载了 mock-ajax.js 并将其放在供应商文件夹中。这是出现错误的测试部分:

0 投票
0 回答
564 浏览

javascript - 带有 PhantomJS、EJS 模板和 XMLHttpRequest 异常 101 的 grunt-contrib-jasmine

我正在尝试为一个简单的项目设置一个基本的单元测试环境,但我遇到了一个奇怪的障碍,经过数小时的研究,我无法克服。

出于某种原因,我Error: NETWORK_ERR: XMLHttpRequest Exception 101直接从 EJS 返回,尝试使用 XHR 加载模板,但只是偶尔一次。

案例很简单,我有一个主干应用程序实例化呈现 EJS 模板的主干视图。这看起来像这样:

要设置 grunt-contrib-jasmine,我的 Gruntfile 中有以下代码段:

我大部分时间都能运行我的测试套件:

但是时不时地,我会让控制台向我吐口水:

日志已添加到 EJS 引擎的相关部分,以帮助我调试。那将是:

我可以grunt jasmine连续运行 6-7 次并让它无缝运行。突然一次尝试会失败,随后的尝试很可能会恢复正常。直到它再次破裂。而这一切都不需要我在任何地方碰任何东西!

我真的开始对解决这个问题失去希望了。以下是我经历过的一些无效的来源:

任何人都知道可能导致此问题的原因或提示下一步尝试调试问题的方法?

PS:我觉得我的问题对代码片段有点不知所措,如果我能以任何方式改进问题,请告诉我。

0 投票
1 回答
392 浏览

javascript - 为什么 grunt-contrib-jasmine 挂了?

我问这个是为了后代,因为我花了一些时间来解决这个问题。

我有一个使用 require.js 和基于 jasmine 的测试的应用程序,通过 grunt 自动化。

我已将模块分组为逻辑组件,每个组件都位于app. 我的requirejs.config()调用为这些组件设置路径前缀,如下所示:

然后我可以像这样指定对这些模块的依赖关系:

我的应用程序工作正常,我的测试通过了我的基于 Web 的运行程序,它遵循与我在应用程序中使用的结构类似的结构,它是<script>文档正文中指向 require.js 的单个元素,data-main设置为test/index,它包含一个非常相似的requirejs.config()调用,只有测试本身的附加路径,以及对window.onload()运行测试的调用。

但是,当我使用grunt-contrib-jasmine时,测试挂起并且没有运行任何测试。我得到的信息是:

如何让我的测试在 grunt 下通过?