Автор оригинала: Pankaj Kumar.
Иногда нам хочется поиздеваться над пустыми методами. Метод EasyMock expect() нельзя использовать для насмешек над пустыми методами. Однако мы можем использовать expectLastCall() вместе с и Answer() для насмешек над методами void.
Метод пустоты EasyMock
Когда мы используем expectLastCall() и и Answer() для моделирования методов void, мы можем использовать getCurrentArguments() для передачи аргументов методу и выполнения некоторых действий над ним. Наконец, мы должны вернуть значение null , так как мы издеваемся над методом void.
Допустим, у нас есть служебный класс, как:
package com.journaldev.utils;
public class StringUtils {
public void print(String s) {
System.out.println(s);
}
}
Вот код для макета метода void print() с помощью EasyMock.
package com.journaldev.easymock;
import static org.easymock.EasyMock.*;
import org.junit.jupiter.api.Test;
import com.journaldev.utils.StringUtils;
public class EasyMockVoidMethodExample {
@Test
public void test() {
StringUtils mock = mock(StringUtils.class);
mock.print(anyString());
expectLastCall().andAnswer(() -> {
System.out.println("Mock Argument = "
+getCurrentArguments()[0]);
return null;
}).times(2);
replay(mock);
mock.print("Java");
mock.print("Python");
verify(mock);
}
}
На рисунке ниже показан вывод консоли при выполнении вышеупомянутого теста JUnit.
Ожидаемый вызов().android()
Если мы просто хотим издеваться над методом void и не хотим выполнять какую-либо логику, мы можем просто использовать expectLastCall().и Void() сразу после вызова метода void для издевательского объекта.