2009-08-16 13 views
0

私はどこでもモックとスタブを使用するファンです。スペックをすばやく実行し続けることができます。 私は一種の困惑、私は次のようにfind_specialメソッドをテストするためにこれを行う可能性がありますどのようにようだ:最小限のDBオーバーヘッドでレール内のアソシエーション拡張ロジックをテストする方法

has_many :foos do 
    def find_special 
     if proxy_owner.baz 
     ... find stuff 
     else 
     ... find other stuff 
     end 
    end 
    end 

私が使用して気にしないだろう。「このために=>モジュールの構文を拡張し、私はドン違いがあると思う。

答えて

1

proxy_ownerでメソッドをスタブする方法を尋ねていますか?この場合、あなたはfoosを呼び出しているオブジェクトではありませんか?

# in Mocha 
item.stubs(:baz).returns(true) 
item.foos.find_special # => find stuff 
item.stubs(:baz).returns(false) 
item.foos.find_special # => find other stuff 

これはテストされていないですが、多分それはあなたが近づくでしょう。

+0

しかし、私はまだFooオブジェクトの束を作り、このテストの前にデータベースに保存する必要があります。 find_specialメソッドによって、実際にデータベースに対してクエリを実行する必要なく、適切なパラメータでFoo.findが呼び出されることをテストできる方法を探しています。 –

+0

短いバージョン:私は工場/備品でこれをテストする方法を知っています - 私はそれらなしでそれを行うことができるかどうかを見たいと思います。 –

+0

Item.newとitem.foos.buildというメモリ内にアイテムとフォームを作成できます。データベースに触れる必要はありません。 – ryanb

関連する問題