Spork计时器不会在运行之间重置

时间:2011-10-18 00:12:14

标签: ruby-on-rails ruby-on-rails-3.1 spork

这是我在github上创建的issue的副本+粘贴,但我也在这里问,以防有人知道如何解决它


使用spork 0.9.0.rc9,我注意到显示规格运行多长时间的计时器不会在运行之间重置自身,而是输出自spork服务器启动以来累积的总时间。

重现的步骤:

  1. 使用命令spork从控制台启动spork
  2. 在另一个窗口中运行rspec。 --drb
  3. 观察规格需要X秒运行,控制台输出验证此
  4. 等待60秒,修改控制器规范,然后重复步骤2
  5. 观察规格需要大约Y秒运行,但控制台输出声称他们花了(X + Y + 60)秒。
  6. 等待10分钟,重复步骤2
  7. 观察规格在Z秒内运行,但控制台输出将数字设为(X + Y + Z + 600)秒
  8. 我的spec_helper只是rspec-rails为您生成的标准版本,我将所有内容放入spork prefork块中,如下所示:

    require 'rubygems'
    require 'spork'
    
    Spork.prefork do
      ENV["RAILS_ENV"] ||= 'test'
      require File.expand_path("../../config/environment", __FILE__)
      require 'rspec/rails'
      require 'rspec/autorun'
    
      Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
    
      RSpec.configure do |config|  
        config.fixture_path = "#{::Rails.root}/spec/fixtures"
        config.use_transactional_fixtures = true
        config.infer_base_class_for_anonymous_controllers = false
      end
    end
    

    我做错了吗?或者是sporked borked?

1 个答案:

答案 0 :(得分:4)

暂时解决这个问题,这是一个已知的rspec问题。

可能不适用于未来版本的rspec的临时修复程序如下:

Spork.each_run do
  # you are advised that this may break in future versions of rspec
  $rspec_start_time = Time.now  
end

<强>更新 它在guard-rspec here和rspec-core here中报告。