0

Mongoid クラスを使用して、Ruby オブジェクトを MongoDB に永続化しています。オブジェクトの例:

class Option
  include Mongoid::Document

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

end

私のテストでは、作成後にインスタンスをスタブ化して、オブジェクトが mongo にヒットするのを回避していることに気付きました。

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

明らかな問題は、すべてのインスタンスに対してこれを行う必要があることです。メソッドをスタブ化するMongoid::Document.save!方法、つまり代わりにミックスインする方法はありますか? そうすれば、ミックスインを使用するすべてのドキュメントがsave!スタブ化されることを知ることができます。

前もって感謝します。

4

1 に答える 1

1

もちろん、 monkeypatch を実行することもできますが、Mongoid::Documentそうしないことをお勧めします。他のテストには original が必要になる場合がありsave!ます。スタブを繰り返す不便さは、ファクトリ メソッドによって軽減できます。

def option_with_stubbed_save
  option = Option.new
  option.stub(:save!).and_return true
  option
end 
于 2012-11-25T17:46:38.257 に答える