我正在运行Rails 3.2.13与Ruby版本2.0.0-p195。我使用的是启用了资产管道的Jasmine-Rails gem版本0.4.5。我想写我的规格在CoffeeScript,但我还没有能够弄清楚如何命名文件和配置茉莉。这样规范就可以被正确地拾取和解析。
这是我茉莉花的内容物。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中的spec_files值。Yml没有任何成功。
提前感谢任何有类似问题的人,找到了它,并可以帮助我沿着编写稍微不那么繁琐的规范的道路前进。
来自Jasmine-Rails的Github主页:
jasmine-rails gem完全支持Rails资源管道,这意味着你可以:
- 为源文件或测试文件使用coffee_script或其他Javascript预编译器
- 使用链轮指令控制包含/排除依赖文件
- 利用资源管道搜索路径来包含来自不同来源/gems的资源
如果您选择使用资产管道支持,许多
jasmine.yml
配置变得不必要,您可以依靠Rails资产管道来完成控制哪些文件包含在测试套件中的艰苦工作。
# minimalist jasmine.yml configuration when leveraging asset pipeline
spec_files:
- "**/*[Ss]pec.{js,coffee}"
这定义了规范文件的名称模式。即0个或多个字符,后跟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
)的路径
只是一件小事。您的文件命名约定使用两个扩展名:my_spec.js.coffee
茉莉花。Yml文件期待只是"spec"后面跟着"coffee"。这两个扩展名不匹配此模式。
spec_files:
- "**/*[Ss]pec.{js,coffee}"
Aire Shaw的出色回答使用了与茉莉花的期望相匹配的文件名my_spec.coffee
。yml文件。
如果您希望使用文件名形式my_spec.js.coffee
(以及.js和.coffee),您可以更改jasmine。Yml文件到:
spec_files:
- "**/*[Ss]pec.{js,coffee,js.coffee}"
我用你的文件名约定来命名我的coffeescript,这对我来说很有效。