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

时间:2011-11-28 22:48:01

标签: ruby-on-rails rspec helpers rspec-rails spork

似乎我的助手(有时是我的模特)在每次使用Spork时都没有重新加载。我应该把什么投入到我的" Spork.each_run"方框?

3 个答案:

答案 0 :(得分: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

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

config.cache_classes = !(ENV['DRB'] == 'true')

答案 1 :(得分:1)

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

答案 2 :(得分:-3)

我从未遇到过这些问题,也许是因为我还使用了像Ryan Bates的RailsCast中描述的Guard gem?

http://railscasts.com/episodes/285-spork