Я хочу использовать powermock для определения статического метода в классе (фрагмент класса ниже):
public class TestService<T> {
public static <T> TestService<T> function1(Class<T> rawType, Object id) {
Соответствующая часть тестового класса приведена ниже.При настройке макета, если я явно установлю значение для целочисленного параметра, а затем вызову с тем же значением, все будет работать как положено.Вызов function1 возвращает testServiceProxy.
Однако я хочу вернуть это значение независимо от того, какое значение целого числа передано. Для этого я закомментирую первую строку:
// PowerMockito.when(TestService.function1(Subscription.class,id)).thenReturn(testServiceProxy);
и удалите комментарии со второй строки.
После этого вызовы функции1 возвращают ноль.
Почему ??
@RunWith(PowerMockRunner.class)
@PrepareForTest(TestService.class)
public class TestServiceTest {
@Mock
private TestService<Subscription> testServiceProxy;
@Mock
private Subscription subscription;
@Test
public void testStart() throws Exception {
Integer id = new Integer(5);
PowerMockito.mockStatic(TestService.class);
PowerMockito.when(TestService.getString()).thenReturn("Hello!");
PowerMockito.when(testServiceProxy.getInt()).thenReturn(new Integer(15));
PowerMockito.when(TestService.function1(Subscription.class,id)).thenReturn(testServiceProxy);
// PowerMockito.when(TestService.function1(Subscription.class,Matchers.eq(any(Integer.class)))).thenReturn(testServiceProxy);
System.out.println("String: " + TestService.getString());
System.out.println("TestServiceProxy: "+testServiceProxy);
// id = new Integer(6);
System.out.println("Function1: "+TestService.function1(Subscription.class, id));
TestService<Subscription> foo = TestService.function1(Subscription.class, id);
if (foo != null) {
System.out.println(" foo instrumentId: "+foo.getInt());
System.out.println(" subselect instrumentId: "+testServiceProxy.getInt());
} else {
System.out.println("Foo is null");
}
}
}