6

我正在运行带有 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 值,但没有成功。

在此先感谢任何与类似问题作斗争、想通了并可以帮助我编写稍微不那么乏味的规范的人。

4

2 回答 2

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}"

这定义了规范文件的名称模式。也就是说,零个或多个字符,后跟Specor spec,并带有jsorcoffee扩展名。

将 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) 的路径。

于 2013-06-18T16:30:59.723 回答
2

只是一件小事。您的文件命名约定使用两个扩展名: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}"

我将您的文件名约定用于我的咖啡脚本,这对我有用。

于 2013-10-01T00:05:27.587 回答