我的模型有一个方法可以从远程资源更新模型中的多个属性。我想用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应该没什么区别。
答案 0 :(得分:4)
我应该深入挖掘MongoID文档。有一章可以使用Dirty tracking:
it "should be updated"
@something.field.should be_changed
end