Как издеваться в методе суперкласса, начинается со статического метода? - PullRequest
0 голосов
/ 21 января 2019

Как я могу издеваться над методом getServerName в суперклассе, используя PowerMockito или Mockito?

public class A extends B{

  public static String builder(){
    return new A().get();
  }

  private String get() {
    return this.getServerName();
  }
}

public abstract class B{

  protected String getServerName(){
    return "Server 1";
  }
}

Помня, что я выполняю статическим методом:

public static void main (String [] args) {
   String name = A.builder();
}

1 Ответ

0 голосов
/ 23 января 2019

Мне удалось это решить!

Вы должны шпионить за классом A

A a = PowerMockito.spy(new A());
PowerMockito.when(a, "getServerName")
           .thenReturn("Mock Value");

// Here is the movement, you have to replace the original constructor.
PowerMockito.whenNew(A.class).withNoArguments().thenReturn(a);

System.out.print(A.builder());

--> Mock Value
...