3

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

方法调用发生在名为的 Sunspot 文件中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'将解决问题。

我的问题是双重的:

  1. 这很骇人听闻
  2. 我已经在不同的地方(在config/environments/test.rb测试文件本身等)尝试过它,但它只是不起作用。

如果有人对发生了什么有任何想法,我欢迎他们!

4

1 回答 1

2

我想到了!有人time.rb在 Rails 应用程序的测试目录中创建了另一个文件,因此在测试环境中对 Time 类的方法调用是调用该文件而不是实际的 Time 类。我从这个 Github 问题线程中获得了检查这种可能性的灵感

于 2011-10-18T08:40:59.223 回答