Mockito: Как легко заглушить метод без издевательства над всеми параметрами
У меня есть метод, который я хотел бы заглушить, но у него много параметров.
Как я могу избежать издевательства над всеми параметрами, но все равно опустить метод.
Пример:
//Method to stub
public void myMethod(Bar bar, Foo foo, FooBar fooBar, BarFoo barFoo, .....endless list of parameters..);
Ответы
Ответ 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 "делегирование" ).
И при следующей возможности создайте ошибку в проекте, требуя переместить параметры в объект конфигурации.