我在运行测试(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'可以解决问题。

我的问题是双重的:


太过分了
我已经在不同的地方(在config/environments/test.rb中,在测试文件本身中等等)尝试了它,但是它根本不起作用。


如果有人有什么想法,我欢迎他们!

最佳答案

我想到了!有人在Rails应用程序的测试目录中创建了另一个名为time.rb的文件,因此在测试环境中对Time类的方法调用是在调用该文件,而不是实际的Time类。我从this Github issue thread那里得到启发来检查这种可能性

10-01 21:36