Как смоделировать вызовы метода некоторого объекта, который передается как параметр метода метода в JUnit Test - PullRequest
1 голос
/ 29 апреля 2020

Я пишу JUnit для какого-то унаследованного класса, который я не могу изменить. Проблема, с которой я сталкиваюсь:

1 Ответ

0 голосов
/ 29 апреля 2020
public class B2 extends B { // so, this is, in fact, an IS-A of B
  public String method2() {
    return "mockedResult";
  }
}

В вашем тесте у вас теперь будет что-то вроде этого:

@Test
public void testMethod() {
  A toTest = new A();
  assertEquals("mockedResult", toTest.myMethod(new B2());
}

Это очень простой c способ. Но я бы порекомендовал прочесть о среде Mocking, такой как Mockito, для более сложных сценариев.

https://www.baeldung.com/mockito-series

Для краткости, используя Mockito, это быть примерно таким:

public class TestClass {

  @Mock
  private B b;

  private A toTest = new A();

  @Test
  public void testMethod() {
    when(b.method2()).thenReturn("mockedResult");
    assertEquals("mockedResult", toTest.myMethod());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...