Мне нужно выполнить интеграционный тест для оператора INSERT.
По сути, мне нужен автоматический тест, который гарантирует, что SQL, написанный в этом запросе, действительно верен.
Я не уверен, какнаписать этот интеграционный тест.
Необходимо принять во внимание следующие соображения:
- Этот метод выполняет тип INSERT типа «забыл и забыл», поэтому модульное тестирование не является IMO.
- Я не могу написать метод findById, потому что у записи нет идентификатора.Идентификатор бесполезен в моем случае, потому что эти записи никогда не будут получены по идентификатору.Более того, это может вызвать проблему типа «курица и яйцо», поскольку операторы findById или insert могут быть неверными.
Я видел кучу постов, которые сразу начинают обсуждать юнит-тестирование.Я не хочу тестировать этот модуль, я хочу написать интеграционный тест, который гарантирует, что мой SQL-запрос корректен.
Я не ищу конкретный код, я ищу правильный концептуальный способ проверки моего sql-запроса, выполненного в коде (в моем случае это Java).
Не могли бы вы дать мне немного?совет?
Код:
public void insertPostStat(PostStat postStat) {
final String sql = "INSERT INTO post_stat(created_at, geom, google_place_id, google_place_name) " +
"VALUES(?, ST_SetSRID(ST_MakePoint(? , ? ), 4326), ?, ?";
KeyHolder holder = new GeneratedKeyHolder();
SqlParameterSource param = new MapSqlParameterSource()
.addValue("created_at", postStat.getCreatedAtMs())
.addValue("longitude", postStat.getLongitude())
.addValue("latitude", postStat.getLatitutde())
.addValue("google_place_id", postStat.getGooglePlaceId())
.addValue("google_place_name", postStat.getGooglePlaceName());
template.update(sql,param, holder);
}