Я должен издеваться над статической функцией с именем toBeMockedFunction в классе Util. Этот метод вызывается из toBeUnitTested, который является общедоступным методом static void. Я хочу, чтобы BeMockedFunction ничего не делал. Я пробовал много подходов (фрагмент из таких 2) частичной имитации и заглушки и не смог добиться успеха.
Пожалуйста, предложите, что я делаю неправильно.
public class Util {
// Some code
public static void toBeUnitTested(CustomObject cb, CustomObject1 cb1, List<CustomObject2> rows, boolean delete) {
// some code
toBeMockedFunction(cb, "test", "test");
}
public static CustomObject toBeMockedFunction(CustomObject cb, String str1) {
// some code
}
}
И ниже мой класс junit
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Util.class})
public class UtilTest {
@Test
public void Test1() {
PowerMockito.spy(Util.class);
//mock toBeMocked function and make it do nothing
PowerMockito.when(PowerMockito.spy(Util.toBeMockedFunction((CustomObject)Mockito.anyObject(), Mockito.anyString()))).thenReturn(null);
Util.toBeUnitTested(cb, "test", "test");
}
}
Подход2
PowerMockito.mockStatic(Util.class); PowerMockito.when(Util.toBeUnitTested((CustomObject)Mockito.anyObject(),Mockito.anyString())).thenCallRealMethod(); Util.toBeUnitTested(cb, "test", "test");