我正在尝试使用TestUnit设置Spork和Capybara,并且正在运行 进入test.rb配置问题。
问题在于Spork需要这样做 config.cache_classes设置为false,以便模型中的更改可以 在运行测试时反映出来而无需重置Spork 时间。
另一方面,Capybara似乎需要这样做 config.cache_classes设置为true,否则进行集成测试 只是似乎没有工作。我只是在寻找任何可能的解决方案/解释。是 这个东西只存在于TestUnit中,或者这可能是一个 我应该报告错误吗?任何帮助都会很大 理解!
答案 0 :(得分:3)
我建议采用与this类似的方法。您要做的主要事情是将config.cache_classes设置为true,但强制Spork在每次运行时重新加载模型和依赖项:
Spork.each_run do
ActiveSupport::Dependencies.clear
ActiveRecord::Base.instantiate_observers
end if Spork.using_spork?
希望这样可以让Capybara的cache_classes成为现实,但它也可以让你的模型和观察者在测试运行之间重新加载。
答案 1 :(得分:1)
我遇到了与spork和黄瓜类似的问题。我找到的解决方案是:
config.cache_classes = (ENV['DRB'] == 'true' ? false : true)
spork设置DRB环境。我不认为这是解决这个问题的最优雅的方法,但如果水豚设置了一些env变量,你可以使用它吗?