私たちのアプリケーションでは、いくつかの興味のあるドメインモデルに対して、after_create/update/deleteコールバックを記述しました。これらのモデルの中で、変更されたモデルの必要なデータをxml化してAuditテーブルに格納する新しいAuditモデルを作成します。例として、コンサルタントモデルのafter_createコールバックは、以下のようになります。
Rspec - オブジェクトをプライベートメソッドでモックする
def after_create
xml = #private xmlize() is called which returns the data of new Consultant object
audit = Audit.new :data=>xml.to_s
audit.save
end
を今、私は、その保存方法は、RSpecのを使用して呼び出されたかどうかを確認するために、監査対象を模擬するかしたいと思います。それとも、RSpecを使ってxmlの内容を正規表現する方法があれば、Ruby in Rails環境を使ってXMLをどのように行うのがうれしいでしょう。
'AuditFactory'クラスを持つことはおそらく冗長です。あなたは[Rubyのそのような構造に対する議論](http://yehudakatz.com/2010/02/15/abstractqueryfactoryfactories-and-alias_method_chain-the-rubyway/)を読んでみたいかもしれません。そして 'Audit.stub!(:new).and_return(mock(...))'を実行し、モックが正しいデータを取得して保存されていることを確認することで '監査 'を模擬することができます。 –
コンストラクタをスタブすることは考えていませんでした。 RubyでのMockingは、Javaよりもはるかに優れています。これは私の答えがRubyで間違っています。おそらく私はそれを削除します! –
ドンとブライアンに感謝します。ブライアン・ドノバンはただの雄牛の目にぶつかりました;) – karthiks