Тест Rspec, если атрибут был обновлен - PullRequest
3 голосов
/ 22 июня 2011

В моей модели есть метод, который обновляет несколько атрибутов в модели из удаленного ресурса.Я хочу проверить это с помощью Rspec, но не могу найти, как проверить, было ли создано или обновлено поле.

Какой-то псевдокод для объяснения вопроса

def update_from_remote
  attributes = {}
  fields.each_key do |field_name|
    attributes[field_name] = scrape_from_remote field_name
  end
  update_attributes(attributes)
end

На самом деле этот код оченьболее сложный, но это только загромождает мой вопрос.create_from_remote довольно похож, только то, что он не вызывает update_attributes, а просто устанавливает их, а затем сохраняет объект.

Я хотел бы проверить это.То, что я хочу, это спецификация, которая проверяет, были ли поля обновлены или заполнены:

it 'should fill or set all local attributes on a new profile' do
  #how to test if a list of fields were updated in the Database?
end
it 'should update all local attributes on an existing profile' do
  #how to test if a list of fields were created in the Database?
end

Я использую mongoId, но AFAIK, который не должен иметь большого значения.

1 Ответ

4 голосов
/ 01 июля 2011

Я должен был копнуть глубже в документации MongoID. Есть глава о Грязном слежении , которую можно использовать:

it "should be updated"
  @something.field.should be_changed
end
...