【问题标题】:How to prevent RSpec helper from being loaded如何防止加载 RSpec 助手
【发布时间】:2015-11-30 12:02:09
【问题描述】:

我目前正在为我们的 Rails 4 应用程序编写与 Capybara 的集成测试。为了使其尽可能轻量级,我编写了一个 capybara_helper.rb 文件,该文件位于 spec 文件夹内,用于 RSpec。

但是,每次运行 RSpec 测试时都会加载此文件,从而破坏了最初存在于测试套件中的现有 Capybara 测试的配置。

有没有办法告诉/配置 RSpec 在启动“正常”单元测试时不加载此文件?

我的集成测试使用命令RAILS_ENV=test bundle exec rspec --tag @type:capybara 加载。我们的正常测试只是使用rake parallel:spec[4] 运行

【问题讨论】:

    标签: ruby-on-rails unit-testing rspec


    【解决方案1】:

    如果您将 capybara_helper 代码放入一个模块中,那么您可以将该模块包含在您的 rails 助手中,仅用于功能测试(即 capybara 测试):

    spec/support/capybara_helper.rb

    module CapybaraHelper
      # Your code
    end
    

    在您的 rails_helper.rb 中,仅包含用于功能测试的模块:

    Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
    RSpec.configure do |config|
      config.include CapybaraHelper, type: :feature
    end
    

    上述方法也适用于tagged example groups。因此,在您的情况下,我认为以下内容应该有效(对于使用类型元数据标记的测试::capybara)。

    RSpec.configure do |config|
      config.include CapybaraHelper, type: :capybara
    end
    

    【讨论】:

    • 哦,非常有趣的方法。一定会记住这一点,因为我们有更多的这些变化即将到来。目前,我将集成测试移至他们自己的项目/存储库,因为我不需要任何 Rails 或 DB 支持。但也会试一试,看看它是否有效。
    猜你喜欢
    • 2016-05-12
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2012-01-08
    相关资源
    最近更新 更多