2012-04-23 2 views
3

제 3자가 처리하는 특정 모의이 있습니다. 나는 단지 같은 모의이 되돌아 왔는지 확인하고 싶다.특정 모의 인스턴스의 모든 메소드를 스텁합니까?

그러나 타사에서는 내 테스트가 정말로 신경 쓰지 않는 배열 메서드 및 메서드를 호출합니다. 거기에 내 모의가 특정 모의 인스턴스와 관련된 모든 메서드를 예상/스텁한다고 말할 수있는 방법이 있습니까?

예 :

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) 
+0

내가 루비 레일에 대해 잘 모르는만큼 세분화되지 않습니다, 또는 루비에 관한 것입니다. 이와 같이, 이것은 내가이 사이트에서 본 가장 이상한 질문들 중 하나입니다 : D – Jasper

+0

"제 3 자"는 무엇을 의미합니까? 사용자 객체를 생성하여 라이브러리에 전달하고, 원하는 모든 작업을 수행 한 다음 동일한 모의 객체를 반환하는지 확인하려고합니까? –

+0

예, 당신 말이 맞아요, 제 설명은별로 의미가 없었습니다. 나는 내 질문을 업데이트했다. – Karan

답변

6

대답은

user = mock(User).as_null_object 

하지만 일반적으로이 방법이 당신의 객체가 너무 큰 것을 의미하고 테스트

+0

내 질문이 업데이트되었습니다. 귀하의 답변이 아직 유효합니다. 시험을 어떻게 향상시킬 수 있습니까? – Karan

+0

실제로이 경우 전체 메소드를'@ user.invitations.create'로 대체하고 테스트해야하는 전체 코드를 줄일 수 있습니다. – Gareth

+0

오, 그게 완벽 해. 고맙습니다. – Karan

관련 문제