如果属性已更新,则Rspec测试

时间:2011-06-22 10:09:25

标签: ruby-on-rails-3 unit-testing rspec mongoid

我的模型有一个方法可以从远程资源更新模型中的多个属性。我想用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 个答案:

答案 0 :(得分:4)

我应该深入挖掘MongoID文档。有一章可以使用Dirty tracking

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