2012-04-23 17 views
3

私は特定のモックをサードパーティが扱っています。私はちょうど同じモックが戻ってきたことを確認したい。特定のモックインスタンスのすべてのメソッドをスタブする方法

しかし、サードパーティは配列メソッドを呼び出し、私のテストが本当に気にしないメソッドを保存します。そのモックインスタンスに、すべてのメソッドがそのモックインスタンスと関係することを期待/スタブすることを私のモックに伝える方法はありますか?

例えば、

user = mock(User) 
user.stub_all 

ありがとうございます!

EDIT問題について

さらに詳しい情報:

テスト:テストされている

it "creating an invitation should return invitation" do 
    invitation = mock_model(Invitation) 
    invitation.stub(:[]=) 
    invitation.stub(:save) 
    Invitation.stub(:create).and_return(invitation) 
    @user.create_invitation 
    @user.create_invitation.should == invitation   
    end 

コード:

def create_invitation 
    invitation = Invitation.create 
    self.invitations.push(invitation) 
    return invitation 
    end 

私はありません、以下を模擬する必要があるが私がテストしているものに直接関連しています:

invitation.stub(:[]=) 
invitation.stub(:save) 
+0

十分に粒状ではありません、私はRuby on Railsのについてあまり知らないことを意味し、ルビーについても。このように、これは私がこのサイトで見た中で最も不気味な質問のタイトルの一つです:D – Jasper

+0

"第三者"とはどういう意味ですか?ユーザーオブジェクトを作成してライブラリに渡そうとしていて、それが何をしたいのかをしてから、同じモックインスタンスを返していることを確認していますか? –

+0

はい、あなたは正しいです、私の説明はあまり意味がありませんでした。私は私の質問を更新しました。 – Karan

答えて

6

答えは

user = mock(User).as_null_object 

であるが、一般的に、このアプローチは、あなたのオブジェクトが大きすぎると、あなたのテストは

+0

私は自分の質問を更新しましたが、あなたの答えはまだ有効です。どうすればテストを改善できますか? – Karan

+0

実際、この場合、その全体のメソッドを '@ user.invitations.create'に置き換えて、テストする必要があるコードの全体を減らすことができます。 – Gareth

+0

ああ、それは完璧です。ありがとう@ガレス! – Karan

関連する問題