2012-04-23 2 views
3

У меня есть определенный макет, который обрабатывается третьей стороной. Я просто хочу проверить, что тот же макет был возвращен обратно.Как вы заглушите все методы конкретного экземпляра mock

Однако сторонняя сторона вызывает методы массива и сохраняет методы, которые мой тест действительно не заботит. Есть ли способ рассказать мне об этом, что он ожидает/заглушит все методы, связанные с этим конкретным экземпляром?

например.

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, или даже о Ruby. Таким образом, это один из самых сумасшедших вопросов, которые я когда-либо видел на этом сайте: D – Jasper

+0

Что вы подразумеваете под «третьей стороной»? Вы пытаетесь создать пользовательский объект и передать его в библиотеку, сделать ли он все, что захочет, а затем убедиться, что он возвращает вам тот же макет? –

+0

Да, вы правы, мое объяснение не имело большого смысла. Я обновил свой вопрос. – Karan

ответ

6

Ответ

user = mock(User).as_null_object 

, но в целом этот подход означает, что ваши объекты слишком велики, и ваши тесты не достаточно зернистая

+0

Я обновил свой вопрос, ваш ответ по-прежнему действителен. Как я могу улучшить свой тест? – Karan

+0

Фактически в этом случае вы можете заменить весь этот метод на '@ user.invitations.create' и сократить всю нагрузку кода, которую вы должны проверить. – Gareth

+0

oh, thats безупречный. спасибо @ Gareth! – Karan

Смежные вопросы