Поиск по сайту:

Метод 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.