5

我正在尝试使用 TestUnit 设置 Spork 和 Capybara,并且遇到了 test.rb 配置问题。

问题是 Spork 要求将 config.cache_classes 设置为 false,以便在运行测试时可以反映模型中的更改,而不必一直重置 Spork。

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

我只是在寻找任何可能的解决方案/解释。这是仅存在于 TestUnit 中的东西,还是这可能是一个错误,我应该报告它?任何帮助将不胜感激!

4

2 回答 2

3

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

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

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

于 2011-06-10T17:32:09.957 回答
1

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

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

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

于 2011-09-02T21:29:57.937 回答