如何在 Jasmine-Rails 中使用 CoffeeScript 规范
Posted
技术标签:
【中文标题】如何在 Jasmine-Rails 中使用 CoffeeScript 规范【英文标题】:How to use CoffeeScript specs with Jasmine-Rails 【发布时间】:2013-06-14 22:34:48 【问题描述】:我正在运行带有 Ruby 版本 2.0.0-p195 的 Rails 3.2.13。我正在使用启用资产管道的 Jasmine-Rails gem 版本 0.4.5。我想用 CoffeeScript 编写我的规范,但我无法弄清楚如何命名文件并配置 jasmine.yml 以便正确提取和解析规范。
这是我的 jasmine.yml 文件的内容:
src_dir: "app/assets/javascripts"
src_files:
- "application.js,coffee"
spec_dir: spec/javascripts
helpers:
- "helpers/**/*.js,coffee"
spec_files:
- "**/*[Ss]pec.js,coffee"
我尝试将文件命名为 my_spec.js.coffee。那是行不通的。当然 my_spec.js 命名约定工作得很好。我还尝试弄乱 jasmine.yml 中的 spec_files 值,但没有成功。
在此先感谢任何遇到过类似问题、想通了并且可以帮助我编写稍微不那么乏味的规范的人。
【问题讨论】:
请don't use signatures or taglines in your posts。 【参考方案1】:只是一件小事。您的文件命名约定使用两个扩展名:my_spec.js.coffee
jasmine.yml 文件只需要“spec”,然后是“coffee”。这两个扩展与此模式不匹配。
spec_files:
- "**/*[Ss]pec.js,coffee"
Aire Shaw 的出色回答使用了文件名 my_spec.coffee
,它与 jasmine.yml 文件的预期相符。
如果您希望使用 my_spec.js.coffee
格式的文件名(以及 .js 和 .coffee),您可以将 jasmine.yml 文件更改为:
spec_files:
- "**/*[Ss]pec.js,coffee,js.coffee"
我的咖啡脚本使用你的文件名约定,这对我有用。
【讨论】:
【参考方案2】:来自Jasmine-Rails's Github homepage:
jasmine-rails gem 完全支持 Rails 资产管道,这意味着您可以:
对源文件或测试文件使用 coffee_script 或其他 Javascript 预编译器 使用 sprockets 指令控制依赖文件的包含/排除 利用资产管道搜索路径来包含来自各种来源/宝石的资产如果您选择使用资产管道支持,许多
jasmine.yml
配置就变得不必要了,您可以依靠 Rails 资产管道来完成控制哪些文件包含在其中的艰苦工作你的测试套件。
# minimalist jasmine.yml configuration when leveraging asset pipeline
spec_files:
- "**/*[Ss]pec.js,coffee"
这定义了规范文件的名称模式。也就是说,零个或多个字符,后跟Spec
或spec
,并带有js
或coffee
扩展名。
将 Jasmine-Rails 路由配置添加到 config/routes.rb
。
mount JasmineRails::Engine => "/specs" if defined?(JasmineRails)
现在您可以在 spec/javascripts/my_spec.coffee 中编写一个规范来测试 Foo。
describe 'Foo', ->
it 'does something', ->
expect(1 + 1).toBe(2)
您的 RoR 项目结构部分应该是这样的:
RailsApp/
|---app/
|---config/
| |---routes.rb
|---...
|---spec/
|---javascripts/
|---my_spec.coffee
|---support/
|---jasmine.yml
您可以使用以下方法测试规格:
bundle exec rake spec:javascript
或者您可以启动 rails 服务器并检查 Jasmine-Rails (/specs
) 的路径。
【讨论】:
嗯,看来您没有仔细阅读我的问题。我已将其设置并使用 javascript 文件作为规范文件。我只是无法让它与 CoffeeScript 文件一起使用。 .coffee 文件被拉入并引发错误(仅具有 .coffee 扩展名,除了该文件与具有 .js 扩展名的工作文件相同)并且 .js.coffee 文件根本没有被拉入测试. @RebekahWaterbury 我知道你想编写咖啡脚本规范,我提供的是我设法在咖啡脚本中编写 Jasmine 规范的方法。我在我的服务器上进行了测试,发现它可以愉快地接受和运行咖啡脚本规范。 嗯,这与我的设置完全相同。也许它在我的 Gem 设置中。我的 Gemfile 的资产块中有 gem 'coffee-rails'。您是否正在使用该宝石和/或将其分组在该位置。我将尝试将其移至非分组区域。我会看看情况如何。 @RebekahWaterbury 我正在使用默认的 Gemfile,coffee-rails
位于 :assets
组中。
是的,我发现了我的错误。这是一个概念性问题,因为我以前没有使用过 CoffeeScript。该规范正在被引入,它不能与标准 javascript 一起使用。我错误地理解 Javascript 可以在 CoffeeScript 文件中使用而无需任何调整。我错了。感谢您的关注并帮助我度过难关。我会赞成你的回答,因为它让我到了正确的地方,并且假设有人正确使用 CoffeeScript,它会为他们工作;)以上是关于如何在 Jasmine-Rails 中使用 CoffeeScript 规范的主要内容,如果未能解决你的问题,请参考以下文章