【问题标题】:How to override RSpec's filter_run_excluding in RubyMine?如何在 RubyMine 中覆盖 RSpec 的 filter_run_ exclude?
【发布时间】:2014-07-15 09:42:45
【问题描述】:

是否可以让 RubyMine 忽略 spec_helper.rb 过滤器? 我通常在我的 spec_helper 文件中添加config.filter_run_excluding :js => true,这样当只运行 rspec 时,它会默认排除所有 js 测试(因为 js 测试通常很慢)。

但是当我在 RubyMine 中编辑文件时,我希望能够运行该单一测试,并让 RubyMine 忽略 config.filter_run_excluding :js => true

我现在解决它的方法是注释掉 spec_helper.rb 中的行,然后在 RubyMine 中运行单个测试,但是在 RubyMine 中默认获得该行为会很好..

版本

  • RubyMine 6.3.3
  • rspec-rails (2.14.1)
  • 导轨 4.0.4

我知道我也可以只删除 spec_helper 中的排除过滤器并停止仅使用 RSpec 来运行所有测试,并使用rspec -tag ~js,但我真的很想覆盖 RubyMine 中的 spec_helper 过滤器而不是终端.

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rspec rspec-rails rubymine


    【解决方案1】:

    最简单的方法可能是使用环境变量。

    在 spec_helper 中围绕该配置行检查环境变量

    unless ENV['INCLUDE_JS']
      config.filter_run_excluding :js => true
    end
    

    并将INCLUDE_JS=1 添加到您不希望排除 Javascript 规范的 RSpec 运行/调试配置中。如果您想对所有运行/调试配置执行此操作,请将环境变量添加到 RSpec 默认值,它会在创建时传播到新配置。

    【讨论】:

    • 非常感谢您的回答。但我非常想只在 RubyMine 中添加配置,而不是在 spec_helper 文件中。在 RubyMine 的 rspec 的默认值中有一个 Runner options 选项我想我可以在那里添加标签,例如:--tag js,但它不起作用。
    • 我认为 RubyMine 中有一个错误:youtrack.jetbrains.com/issue/RUBY-15547 我认为这不是这个问题的问题,因为我认为只有使用 RSpec 选项(其中这就是我给出答案的原因):在命令行上,--tag js 覆盖filter_run_excluding,但仅运行标记为js 的示例;我试过--tag js --tag ~js,但它的行为就像--tag ~js。至少您只需要将环境变量检查添加到 spec_helper.rb 一次,或者可能为您使用 filter_run_excluding 的每个标签添加一次。
    • 好的。然后我猜环境变量是最好的解决方案。非常感谢您的回答和cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多