Мокинг локального объекта метода и чтение из него - PullRequest
0 голосов
/ 20 июня 2020

Я использую powermckito и пытаюсь имитировать локальный объект и читать из него API. Мой класс реализации выглядит следующим образом:

public class LogoutUtil {

    public static void updateState() {
        SrvcContext sc  = new SrvcContext();
        sc.setUserName("UserNAME");

    }
}

Я пытаюсь имитировать объект SrvcContext и прочитать имя пользователя, вызвав метод получения. Вот мой тестовый код:

@Test
public void updateStateTest() {
    SrvcContext svc = PowerMockito.mock(SrvcContext.class);
    LogoutUtil.updateState();
    try {
        PowerMockito.whenNew(SrvcContext.class).withNoArguments().thenReturn(svc);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String userName = svc.getUserName(); //This gives null
    Assert.assertEquals("UserNAME", userName);
}

Любая помощь, как это сделать. Я не могу изменить класс LogoutUtil.

Спасибо

1 Ответ

0 голосов
/ 20 июня 2020

Проблема в том, что метод LogoutUtil.updateState - это stati c, а тестирование и имитация методов c не всегда проста. Но с PowerMockito вы можете сделать это, вызвав метод mockStatic: посмотрите здесь : это должно решить вашу проблему

...