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

Reb*_*ury 6 ruby tdd ruby-on-rails coffeescript jasmine

我正在使用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}"
Run Code Online (Sandbox Code Playgroud)

我试过命名文件my_spec.js.coffee.这不起作用.当然my_spec.js命名约定可以正常工作.我也试过搞乱jasmine.yml中的spec_files值而没有任何成功.

提前感谢那些在类似问题上遇到困难的人,想出来了,并且可以帮助我沿着编写稍微繁琐的规范的道路前进.

Ari*_*iao 6

来自Jasmine-Rails的Github主页:

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}"
Run Code Online (Sandbox Code Playgroud)

这定义了spec文件的名称模式.也就是说,零个或多个字符,然后是Specspec,和一个jscoffee扩展名.

添加Jasmine-Rails路由配置config/routes.rb.

mount JasmineRails::Engine => "/specs" if defined?(JasmineRails)
Run Code Online (Sandbox Code Playgroud)

现在你可以在spec/javascripts/my_spec.coffee中编写一个测试Foo的规范.

describe 'Foo', ->
  it 'does something', ->
    expect(1 + 1).toBe(2)
Run Code Online (Sandbox Code Playgroud)

你的RoR项目结构应该是这样的:

RailsApp/
|---app/
|---config/
|   |---routes.rb
|---...
|---spec/
    |---javascripts/
        |---my_spec.coffee
        |---support/
            |---jasmine.yml
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法测试规格:

bundle exec rake spec:javascript
Run Code Online (Sandbox Code Playgroud)

或者您可以启动rails服务器并检查Jasmine-Rails(/specs)的路径.