【问题标题】:How to use CoffeeScript specs with Jasmine-Rails如何在 Jasmine-Rails 中使用 CoffeeScript 规范
【发布时间】: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 值,但没有成功。

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

【问题讨论】:

标签: ruby-on-rails ruby coffeescript tdd jasmine


【解决方案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}"
    

    这定义了规范文件的名称模式。也就是说,零个或多个字符,后跟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) 的路径。

    【讨论】:

    • 嗯,看来您没有仔细阅读我的问题。我已将其设置并使用 javascript 文件作为规范文件。我只是无法让它与 CoffeeScript 文件一起使用。 .coffee 文件被拉入并引发错误(仅具有 .coffee 扩展名,除了该文件与具有 .js 扩展名的工作文件相同)并且 .js.coffee 文件根本没有被拉入测试.
    • @RebekahWaterbury 我知道你想编写咖啡脚本规范,我提供的是我设法在咖啡脚本中编写 Jasmine 规范的方法。我在我的服务器上进行了测试,发现它可以愉快地接受和运行咖啡脚本规范。
    • 嗯,这与我的设置完全相同。也许它在我的 Gem 设置中。我的 Gemfile 的资产块中有 gem 'coffee-rails'。您是否正在使用该宝石和/或将其分组在该位置。我将尝试将其移至非分组区域。我会看看情况如何。
    • @RebekahWaterbury 我正在使用默认的 Gemfile,coffee-rails 位于 :assets 组中。
    • 是的,我发现了我的错误。这是一个概念性问题,因为我以前没有使用过 CoffeeScript。该规范正在被引入,它不能与标准 javascript 一起使用。我错误地理解 Javascript 可以在 CoffeeScript 文件中使用而无需任何调整。我错了。感谢您的关注并帮助我度过难关。我会赞成你的回答,因为它让我到了正确的地方,并且假设有人正确使用 CoffeeScript,它会为他们工作;)
    猜你喜欢
    • 2012-01-08
    • 2011-12-20
    • 2011-11-08
    • 2012-10-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多