Метод EasyMock Void — expectLastCall()
Иногда мы хотим имитировать методы void. Метод EasyMock expect()
нельзя использовать для имитации методов void. Однако мы можем использовать expectLastCall()
вместе с andAnswer()
для имитации методов void.
Пустой метод EasyMock
Когда мы используем expectLastCall()
и andAnswer()
для имитации методов 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);
}
}
ожидатьпоследнегозвонка().andVoid()
Если мы просто хотим смоделировать метод void и не хотим выполнять какую-либо логику, мы можем просто использовать expectLastCall().andVoid()
сразу после вызова метода void для смоделированного объекта.
Вы можете проверить полный проект и другие примеры EasyMock из нашего репозитория GitHub.