【问题标题】:Spork Capybara, config.cache_classes conflictSpork Capybara,config.cache_classes 冲突
【发布时间】:2011-06-10 17:25:53
【问题描述】:

我正在尝试使用 TestUnit 设置 Spork 和 Capybara,并且正在运行 进入 test.rb 配置问题。

问题是 Spork 要求 config.cache_classes 设置为 false,这样模型中的变化就可以 在运行测试时反映,而无需重置 Spork 所有 时间。

另一方面,水豚似乎要求 config.cache_classes 设置为 true,否则集成测试 只是似乎不起作用。

我只是在寻找任何可能的解决方案/解释。是 这个东西只存在于 TestUnit 中,或者这可能是一个 错误,我应该这样报告吗?任何帮助都会很大 感激不尽!

【问题讨论】:

    标签: ruby-on-rails capybara spork


    【解决方案1】:

    我建议采用类似于this 的方法。您要做的主要事情是将您的 config.cache_classes 设置为 true,但强制 Spork 在每次运行时重新加载您的模型和依赖项:

    Spork.each_run do
      ActiveSupport::Dependencies.clear
      ActiveRecord::Base.instantiate_observers
    end if Spork.using_spork?
    

    希望这将使水豚的 cache_classes 为真,但它也将允许您的模型和观察者在测试运行之间重新加载。

    【讨论】:

    • 我一直在寻找解决这个问题的方法,我看到的只是 cmets 说“试试这个”、“做一些类似的事情”和“希望如此”。不幸的是,这个答案并不比其他答案更接近解决问题。
    【解决方案2】:

    我在 spork 和 cucumber 上遇到了类似的问题。我找到的解决方案是:

    config.cache_classes = (ENV['DRB'] == 'true' ? false : true)
    

    spork 设置 DRB 环境。我不认为这是解决这个问题的最优雅的方法,但是如果 capybara 设置了一些环境变量,你可以使用它吗?

    【讨论】:

    • 这就是我最终要做的。 cache_classes = false 在运行完整的测试套件时让我在其他地方非常痛苦,但如果我正在运行 spork,我通常会专注于任务并添加调试等。即使上面添加了 each_run,如果 cache_classes 设置为 true ,spork 不会为我重新加载。
    猜你喜欢
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多