Требуется модульное тестирование службы, содержащей вызов метода @ Aysn c, который возвращает объект CompletableFuture. Но будущий объект всегда равен нулю (во время тестирования), вызывая исключение NullPointerException.
future.get () вызывает ошибку
Тестовый код
@RunWith(MockitoJUnitRunner.class)
public class ContainerValidatorTest {
@Mock
QueryGenerator queryGenerator;
@Mock
SplunkService splunkService;
@InjectMocks
private ContainerValidatorImpl containerValidatorImpl;
@Test
public void validateContainerTestWithNullData(){
CacheItemId cacheItemId = null;
String container = null;
assertFalse(containerValidatorImpl.validateContainer(cacheItemId,container));
}
}
Сервисный код
@Override
public boolean validateContainer(CacheItemId cacheItemId, String container) {
Query query = queryGenerator.getUserDetailsFromCacheInfoQuery(cacheItemId);
String response;
try {
CompletableFuture<String> future = splunkService.doExecuteQuery(query);
response = future.get();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Error While Fetching User Details : "+ e.getLocalizedMessage());
}
System.out.println(response);
JsonArray jsonArray = new JsonParser().parse(response).getAsJsonArray();
if(!jsonArray.isJsonNull()) {
return jsonArray.get(0).getAsJsonObject().get("TAG").getAsString().equalsIgnoreCase(container);
}
throw new RuntimeException("Not Able to Find UserDetails");
}