5

サードパーティによって処理されている特定のモックがあります。同じモックが戻ってきたことを確認したいだけです。

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

例えば。

user = mock(User)
user.stub_all

ありがとう!

編集

問題に関する詳細情報:

テスト:

  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)
4

2 に答える 2

6

答えは

user = mock(User).as_null_object

しかし、一般的に、このアプローチは、オブジェクトが大きすぎて、テストが十分に細かくないことを意味します

于 2012-04-23T22:19:11.957 に答える
0

私はこれに偶然出くわしました-しかし、これを行う「祝福された」方法は(今)spy、本質的に上記と同じ方法を使用しています:

参照:https ://thoughtbot.com/blog/a-closer-look-at-test-spies

クラスがすでに実装しているメソッドをスタブアウトする必要はありません。

于 2021-03-29T22:02:48.777 に答える