Как смоделировать вложенные статические методы с помощью PowerMockito? - PullRequest
0 голосов
/ 04 октября 2018

Как я могу смоделировать вложенные статические методы с помощью PowerMockito?Ниже приведен очень простой пример того, как я хочу его использовать.

Класс:

public class SomeClass {
    public static String someMethodA(){
        //some very important codes here
        return someMethodB();
    }
    private static String someMethodB(){
        return someMethodC();
    }
    private static String someMethodC(){
        return "Some Text";
    }
}

Уже пробовал следующее, но не сработало:

PowerMockito.mockStatic(SomeClass.class);
PowerMockito.stub(PowerMockito.method(SomeClass.class, "someMethodB")).toReturn("Some Other Text");

Я хотел запустить someMethodA () как есть, поэтому я хочу вместо этого заглушить someMethodB ().Могу ли я это сделать?Надеемся, что есть способ без необходимости модифицировать модификаторы доступа, потому что коды, с которыми я работаю, являются устаревшими кодами.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете spy приватные статические методы.

Проверено в JUnit4

import static org.junit.Assert.assertEquals;
import static org.powermock.api.mockito.PowerMockito.spy;
import static org.powermock.api.mockito.PowerMockito.when;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClass.class)
public class SomeClassTest {

    @Test
    public void test() throws Exception {
        spy(SomeClass.class);
        when(SomeClass.class, "someMethodB").thenReturn("Some Other Text");
        assertEquals("Some Other Text", SomeClass.someMethodA());
    }

}
...