Как «parse» может быть неопределенным для класса Time в тестовой среде, но не для разработки или производства? - PullRequest
3 голосов
/ 15 октября 2011

Я сталкиваюсь со странной проблемой при выполнении теста (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, в самом тестовом файле и т. д.), и он просто не работает.

Если у кого-то есть идеи, что происходит, я приветствую их!

1 Ответ

2 голосов
/ 18 октября 2011

Я понял это!Кто-то создал другой файл с именем time.rb в тестовой директории приложения Rails, поэтому вызовы метода для класса Time в тестовой среде вызывали этот файл, а не фактический класс Time.Я получил вдохновение, чтобы проверить эту возможность от этой ветки выпуска Github

...