Подтвердить что ты не робот

Mockito: Как легко заглушить метод без издевательства над всеми параметрами

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

Пример:

//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);
4b9b3361

Ответ 1

Я не совсем понимаю, с какой проблемой вы пользуетесь Mockito. Предполагая, что вы создаете макет интерфейса, который содержит ваш метод myMethod(), вы можете проверить только параметры для интересующего вас метода. Например (предполагается, что интерфейс называется MyInterface и использует JUnit 4):

@Test
public void test() {
    MyInterface myInterface = mock(MyInterface.class);
    FooBar expectedFooBar = new FooBar();        

    // other testing stuff

    verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...);
}

Вам понадобится статический импорт методов Mockito для этого. Матчи any() не заботятся о том, какое значение было передано при проверке.

Вы не можете избежать передачи чего-либо для каждого аргумента в вашем методе (даже если это только NULL).

Ответ 2

использовать mockito.any

если myobj mymethod принимает строку, строку, строку для примера

чтобы закрыть вызов

Mockito.when(myojb.myMethod(Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)))
    .thenReturn(amockedobject);

чтобы проверить, что SteveD уже дал ответ

Mockito.verify(myojb).myMethod(
    Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)));

Ответ 3

Создайте класс-оболочку, который вызывает реальный метод и заполняет все аргументы, но те, которые вы поставляете (a.k.a "делегирование" ).

И при следующей возможности создайте ошибку в проекте, требуя переместить параметры в объект конфигурации.