Редактировать: Обновлено
У меня проблема в строке AboutApi aboutApi = new AboutApi (getApiClient ()). Здесь он вызывает новый экземпляр, а не использует тот, который я высмеял. Я хочу знать, как я могу вставить свой смоделированный экземпляр AboutApi, не касаясь RestClient. java
В этом случае вы должны взглянуть на функциональность PowerMockito whenNew.
Вам нужно будет добавить аннотацию @PrepareForTest
, чтобы она включала класс, который необходимо изменить, в вашем случае RestClient
.
@RunWith(PowerMockRunner.class)
@PrepareForTest(RestClient.class)
Не уверен, является ли это опечатка в вашем вопросе, но метод, для которого нужно определить поведение, должен быть getMultiSiteServiceInfo
вместо getServiceInfo
.
@Test
public void testIsEnabled() throws Exception {
Mockito.when(aboutApiClient.getMultiSiteServiceInfo()).thenReturn(serviceInfo);
Mockito.when(serviceInfo.getStatus()).thenReturn("ACTIVE");
PowerMockito.whenNew(AboutApi.class)
.withAnyArguments()
.thenReturn(aboutApiClient);
boolean status = restClient.isEnabled();
Assert.assertTrue(status);
}
Вы можете заменить withAnyArguments()
на withArguments(Mockito.any(ApiClient.class))
, если хотите быть более указать c.
Обратите внимание, что поля tokenService
и baseUrl
в вашем классе RestClient
будут null
.