我在运行测试(Steak + Capybara)时遇到一个奇怪的问题,该测试请求某个页面我收到错误:
undefined method parse for Time:Class
方法调用发生在名为type.rb
:
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
,测试文件本身等)尝试过它,但它不起作用。如果有人有任何想法,我欢迎他们!
答案 0 :(得分:2)
我明白了!有人在Rails应用程序的测试目录中创建了另一个名为time.rb
的文件,因此测试环境中Time类的方法调用是调用该文件而不是实际的Time类。我从this Github issue thread