感谢您的回答,Fares,它让我深入了解了 jasmine 配置文件发生了什么。
文件如何包含在jasmine
页面<head>
标签中的顺序是可预测的。
首先,我的设置细节:
rails 4.0.1
jasmine 1.3.2
jquery-rails 3.0.4 (which provides jquery-1.10.2)
这是我的
spec/javascripts/support/jasmine.yml
。我没有
helpers
,我不需要
css
文件来测试我的特定应用程序,并且我删除了所有评论。
src_files:
- spec/javascripts/lib/jquery-1.10.2.js
- app/assets/javascripts/tools/dependency-parser.js
spec_dir: spec/javascripts
spec_files:
- '**/*[sS]pec.js'
我的
<head>
茉莉花页面按顺序包含以下内容:
jasmine core <link rel="shortcut icon" type="image/png" href="/__JASMINE_ROOT__/images/jasmine_favicon.png">
<link rel="stylesheet" href="/__jasmine__/jasmine.css" type="text/css" media="screen">
<script src="/__jasmine__/jasmine.js" type="text/javascript"></script>
<script src="/__jasmine__/jasmine-html.js" type="text/javascript"></script>
<script src="/__jasmine__/json2.js" type="text/javascript"></script>
src_files <script src="/spec/javascripts/lib/jquery-1.10.2.js" type="text/javascript"></script>
<script src="/app/assets/javascripts/tools/dependency-parser.js" type="text/javascript"></script>
helper_files <!-- I didn't have anything here -->
spec_files <script src="/__spec__/dependency-parser_spec.js" type="text/javascript"></script>
jasmine boot <script src="/__boot__/boot.js" type="text/javascript"></script>
我的应用程序使用资产管道和
jquery-rails
gem,以及典型的包括
app/assets/application.js
:
//=require jquery
//=require jquery-ujs
//=require tree .
因为我使用的是jquery-rails
gem,这意味着我实际上没有任何地方可以直接加载 jQuery JavaScript 文件——如果它们来自任何地方,它们应该来自资产管道。app/assets/javascripts/application.js
由于某种原因,我似乎也无法包含该文件。事实证明这没问题。我只想测试我的自定义 JavaScript,它依赖于 jQuery。
所以,我只是下载了我的应用程序正在使用的 jQuery 版本(1.10.2)
,并将其放入:
spec/javascripts/lib/ <= I created this folder
之后一切都运行良好,因为我可以.js
按照我需要的顺序加载我的文件。这并不完美。我现在手动让我的 jQuery 版本在我的规范中与jquery-rails
我使用的任何版本相同,但现在这是一件相当小的事情......尽管它引出了一个问题,“为什么人们将 javascript 文件打包成一个 gem? " 没有其他 Web 框架能做这种古怪的事情。
我还尝试使用jasmine 2.0.0.rc5
gem(撰写本文时的当前版本),因为它应该处理这样的资产管道问题,但它对我不起作用。
我还尝试跳到更复杂的东西,比如使用jasmine-jquery
or jasminerice
gems,但发现它们的两个实现都是我上面所做的更复杂的版本。一旦我了解了配置文件<head>
在我的特定情况下如何生成标签的内容,这是一个相对简单的修复。
如果我觉得有必要(据说它有更好的 Rails 4 支持),我可能会jasmine 2.0.0
在它发布时移到它,但我很确定这个解决方案会很好地工作。