如何在测试环境中为Time类定义“解析”,而不是开发或生产?

时间:2011-10-15 02:23:41

标签: ruby-on-rails testing sunspot-rails

我在运行测试(Steak + Capybara)时遇到一个奇怪的问题,该测试请求某个页面我收到错误:     undefined method parse for Time:Class

方法调用发生在名为type.rb

的Sunspot文件中
def value_to_utc_time(value)
  if value.respond_to?(:utc)
     value.utc
  elsif value.respond_to?(:new_offset)
    value.new_offset
  else
    begin
      Time.parse(value.to_s).utc
    rescue ArgumentError
      DateTime.parse(value.to_s).new_offset
    end
  end
end

当我在RAILS_ENV=test中运行我的服务器时,我得到了同样的错误。当我在开发中运行服务器时,一切都很好,花花公子。这似乎表明它不仅仅是我的测试框架,而是整个测试环境正在推动这个错误。

到目前为止我在网上找到的关于Time.parse未定义的唯一信息一直没有用,大多数人都说添加require 'time'会解决问题。

我的问题有两个:

  1. 这是hacky
  2. 我在各个地方(config/environments/test.rb,测试文件本身等)尝试过它,但它不起作用。
  3. 如果有人有任何想法,我欢迎他们!

1 个答案:

答案 0 :(得分:2)

我明白了!有人在Rails应用程序的测试目录中创建了另一个名为time.rb的文件,因此测试环境中Time类的方法调用是调用该文件而不是实际的Time类。我从this Github issue thread

获得灵感来检查这种可能性