我在运行测试(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那里得到启发来检查这种可能性