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-sies

您不必删除该类已经实现的任何方法。

于 2021-03-29T22:02:48.777 回答