如何在Jasmine-Rails中使用CoffeeScript规范



我正在运行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个或多个字符,后跟Specspec,扩展名为jscoffee

添加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,这对我来说很有效。

最新更新