Я написал код в нашем приложении Spring Boot 2 для вызова стороннего API с помощью HTTPUrlConnection.
public String loginApi(LoginDTO loginDto)
{
String responseData = null;
HttpURLConnection conn = null;
try {
link = authBaseUrl + loginUrl;
url = new URL(link);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty(CONTENT_TYPE, MEDIA_TYPE);
String body = getAuth0LoginDto(loginDto);
// =====================
// For POST only - START
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(body.getBytes(StandardCharsets.UTF_8));
os.flush();
os.close();
// For POST only - END
// ====================
try (BufferedReader br = (conn.getResponseCode() >= 400
? new BufferedReader(new InputStreamReader(conn.getErrorStream()))
: new BufferedReader(new InputStreamReader(conn.getInputStream())))) {
StringBuilder everything = new StringBuilder();
String output = null;
while ((output = br.readLine()) != null) {
everything.append(output);
}
responseData = everything.toString();
}
} catch (JsonProcessingException e) {
throw new Auth0Exception("Could not create Auth0 Login Body", e);
} catch (IOException e) {
throw new Auth0Exception("Error with Login API", e);
} finally {
if (conn != null) {
conn.disconnect();
}
}
return responseData;
}
Теперь я очень привык проводить настоящее интеграционное тестирование, когда я делаю реальный звонок в веб-сервис и проверяю результаты.
Теперь меня просят строго использовать Mockito, а не PowerMockito, не EasyMock, для создания насмешливых тестов, и я никогда раньше этого не делал. Мое знание Мокито также слабое, так как я не использовал его в течение очень долгого времени.
Итак, я знаю, что об этом уже спрашивали, и я действительно искал в Интернете, и я действительно не нашел полный кусок кода в качестве примера. Я вижу фрагменты кода, из-за которых у меня не хватает частей, и я недостаточно осведомлен, чтобы добавлять эти части самостоятельно.
Я знаю, что фактическая реализация этого кода работает нормально, и тест интеграции также работает отлично. Но то, что я видел раньше, это то, что некоторым пользователям говорят, что им нужно изменить свой клиентский код, чтобы тесты mockito работали.
Если я не получу тесты на макетирование, работающие для HTTPUrlConnection, то я буду вынужден переключиться на RestTemplate и Mocking, поскольку мой коллега настаивает на том, чтобы мы все равно использовали RestTemplate.
Спасибо!