Ответ 1
Не забудьте добавить @PrepareForTest({ParentClassToSupress.class})
в свой тестовый класс. Затем вы можете сделать так, как предлагает Стив и подавляет методы родителя: PowerMockito.suppress(methodsDeclaredIn(ParentClassToSupress.class));
Я использую PowerMock, и я хотел бы знать, как сохранить все поведение дочернего класса, но заглушить super
вызовы, которые могут быть переопределены дочерним элементом.
Скажем, у меня есть этот класс:
public class A {
public String someMethod() {
return "I don't want to see this value";
}
}
и подкласс:
public class B extends A {
@Override
public String someMethod() {
return super.someMethod() + ", but I want to see this one";
}
}
Как отключить вызов до super.someMethod()
?
Я пробовал
@Test
public void test() {
B spy = PowerMockito.spy(new B());
PowerMockito.doReturn("value").when((A)spy).someMethod();
assertEquals("value, but I want to see this one", spi.someMethod());
}
Не забудьте добавить @PrepareForTest({ParentClassToSupress.class})
в свой тестовый класс. Затем вы можете сделать так, как предлагает Стив и подавляет методы родителя: PowerMockito.suppress(methodsDeclaredIn(ParentClassToSupress.class));
Те действия, которые вы пытаетесь сделать, не будут работать так, как вы ожидаете. Тем не менее, я думаю, у вас есть несколько вариантов, чтобы обойти это, конечно, с PowerMockito.
Посмотрите на этот fooobar.com/questions/295027/....
Вы можете попробовать подавить методы из класса Parent,
PowerMockito.suppress(methodsDeclaredIn(A.class));
Вот статья о Stubbing, подавляющая и заменяющая PowerMock, которая может быть использована.
https://www.jayway.com/2013/03/05/beyond-mocking-with-powermock/