当我使用Spork时,如何确保帮助程序和模型在RSpec中重新加载?

kfi*_*ick 8 rspec ruby-on-rails helpers spork rspec-rails

看起来我的助手(有时是我的模特)在每次使用Spork时都没有重新加载.我应该把什么放进我的"Spork.each_run"区块?

Ben*_*aum 8

我遇到了同样的问题,所以我在each_run块中设置了它:

Spork.each_run do
  # This code will be run each time you run your specs.
  ActiveSupport::Dependencies.clear
  ActiveRecord::Base.instantiate_observers
  FactoryGirl.reload

  Dir[File.join(File.dirname(__FILE__), '..', 'app', 'helpers', '*.rb')].each do |file|
    require file
  end
end
Run Code Online (Sandbox Code Playgroud)

另外,请不要忘记在config/environments/test.rb中:

config.cache_classes = !(ENV['DRB'] == 'true')
Run Code Online (Sandbox Code Playgroud)


mor*_*ner 1

这可能是因为您将它们加载到prefork块中。如果您在那里加载内容,您的测试运行得更快,但有时您需要重新加载。您可以加载“each_run”块,但测试会更慢。如果您更喜欢速度,则可以在需要重新加载时重新启动 Spork 服务器。这样,预分叉块将再次运行,并且您的模型和助手将被重新加载。