2012-11-25 11 views
0

我正在使用Mongoid類將Ruby對象保存到MongoDB。例子中的物體:如何在RSpec中存入混合方法

class Option 
    include Mongoid::Document 

    field :name, type: String 
    field :created_at, type: Time, default: ->{ Time.now } 

end 

在我的測試,我發現自己磕碰實例創建後,以避免撞上蒙戈的對象:

o1 = Option.new 
o1.stub(:save!).and_return true #stub method 
o1.name = 'red' 
o1.save! 

最明顯的問題是,我需要爲每個實例這樣做。有沒有一種方法可以保留Mongoid::Document.save!方法,即混合輸入?這樣我就可以知道使用混合輸入的任何文檔都會有save!殘留。

在此先感謝。

回答

1

您當然可以使用monkeypatch Mongoid::Document,但我建議不要這樣做,其他測試可能需要原始save!。反覆磕碰的不便,可以通過工廠方法來緩解:

def option_with_stubbed_save 
    option = Option.new 
    option.stub(:save!).and_return true 
    option 
end 
+0

甚至更​​好有將存根任何對象的'保存'方法,如果它有一個'保存'的方法,例如方法:!https://開頭要點.github.com/4145069 –