помочь с тестом заглушки и макета, как использовать макет, который также должен возвращать значение? - PullRequest
0 голосов
/ 06 июня 2011

Метод, который я пытаюсь проверить:

def self.load_file(file)
  lookup = ''

  if file.extension.include? "abc"
    lookup = file.extension
  else
    lookup = file.last_updated
  end  

  @location = Location.find_by_lookup(lookup)

  @location
end

Так что мне нужно заглушить файл, чтобы он отвечал на вызовы extension и last_updated. Мне также нужно смоделировать вызов file.last_updated, потому что я хочу убедиться, что если расширение файла имеет «abc», оно будет искать не по расширению, а по «last_updated».

Как я могу это проверить?

1 Ответ

1 голос
/ 06 июня 2011

Ваш поток будет выглядеть примерно так (замените «MyClass» фактическим именем вашего класса):

it "should lookup by last_updated for abc files" do
  update_time = Time.now
  # create a location to match this update_time here
  file = double("file")
  file.should_receive(:extension).and_return("abc")
  file.should_receive(:last_update).and_return(update_time)
  MyClass.load_file(file).should == Location.find_by_lookup(update_time)
end

it "should lookup by extension for all other files" do
  # create a location to match the "def" extension here
  file = double("file")
  file.should_receive(:extension).twice.and_return("def")
  file.should_not_receive(:last_update)
  MyClass.load_file(file).should == Location.find_by_lookup("def")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...