2011-06-22 103 views
3

我的模型有一個方法可以從遠程資源更新模型中的幾個屬性。我想用Rspec來測試,但是無法找到如何測試字段是否被創建或更新。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 

在現實中,這個代碼是一個複雜得多,但只會弄亂我的問題。 A 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,但據我所知,不應該太大的差別。

回答

4

我應該深入挖掘MongoID文檔。有關於Dirty tracking的章節可以使用:

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