Правильное использование заглушки - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь протестировать метод, который вызывает пару других методов в классе. Я хотел бы, чтобы другие методы были заглушены, чтобы они не выполнялись. Я думал, что это просто вопрос использования заглушки. Например:

class Fubar {  
void fu() {  
    // . . .  
    bar();  
}  

void bar() {  
    // . . .  
}  

void testFu() {  
    Fubar fubar = new Fubar();  
    stub (method (Fubar.class, "bar"));  

    replay();  

    fubar.fu();  

    verifyAll();  
}  

Но, похоже, это не работает. Он заканчивается в методе 'bar', когда я ожидал, что он будет по сути неактивным. Я использую это неправильно?

Спасибо.

1 Ответ

1 голос
/ 27 мая 2011

Основная проблема вашего подхода заключается в том, что ваш fubar экземпляр, который находится на стадии тестирования, не имеет ничего общего с вашей заглушкой.

Я предлагаю вам использовать createPartialMock(), что позволяетсоздать новый экземпляр Fubar и использовать только макет bar().Таким образом, вы можете проверить свой экземпляр fubar (созданный createPartialMock()) и записать поведение bar().

...