Насмешливый статический метод
Я хочу поиздеваться над статическим методом, который вызывается внутри другого статического метода.
public class MyClass
{
public static void methodA(String s)
{
...
methodB(s);
...
}
public static void methodB(String s)
{
...
}
}
Итак, я хочу издеваться над methodA
, но я хочу пропустить вызов methodB
.
Я перепробовал почти все решения, которые мне удалось найти, но безуспешно. Каждый раз, когда methodB
вызывается.
Некоторые решения, которые я использовал:
PowerMockito.suppress(method(MyClass.class, "methodB"));
MyClass.methodA("s");
_
PowerMockito.stub(method(MyClass.class, "methodB"));
MyClass.methodA("s");
_
PowerMockito.mockStatic(MyClass.class);
doNothing().when(MyClass.class, "methodB", anyString());
MyClass.methodA("s");
И многие другие... У кого-нибудь есть идея, как решить эту проблему?
1 ответ:
По моему мнению, вам следует шпионить за своим классом, а не насмехаться над ним.
В этой ситуации все статические методы будут вызываться с реальной реализацией, и вдобавок вы можете дать команду не вызывать
methodB
:@RunWith(PowerMockRunner.class) @PrepareForTest(MyClass.class) class MyClassTest { @Test public void test() { PowerMockito.spy(MyClass.class); doNothing().when(MyClass.class, "methodB", anyString()); MyClass.methodA("s"); } }