Тестовые примеры junit для приложения SpringBoot, которое не использует объект репозитория JPA

Я пишу компонент springboot, который просто отвечает за аудит операции входа в систему. Поскольку компонент отвечает только за запись в базу данных, операция извлечения (выбора) таблицы выполняться не будет. Я просто использую пакет @Repository (org.springframework.data.repository.Repository) и реализованный метод с оператором вставки в для записи в базу данных.

@Repository
public interface AuditRepository extends Repository<UserAudit,String> {
    @Modifying
    @Query(value = "insert into user_audit(user_id,datetime,function_code,ip_address) values (:user_id,:datetime,:function_code,:ip_address)",nativeQuery = true)
    @Transactional
    public void recordUserAudit(@Param("user_id")String user_id, @Param("datetime") Timestamp datetime, @Param("function_code") int function_code, @Param("ip_address") String ipAddress);
    }

Выполнение этого метода по http-запросу действительно работает.

Я бы хотел написать тесты junit в базе данных H2, которые проверяют, правильно ли вставлена ​​запись. для которого я использую тестовый профиль. вставка записи в методе тестирования с зависимостью H2 также, похоже, работает, однако в настоящее время я не вижу способа проверить наличие записи.

Любые предложения Как этого добиться?

Пс. Я понимаю, что это возможно либо с @JpaRepository (org.springframework.data.jpa.repository.JpaRepository), либо с @CrudRepository, но я бы предпочел не использовать их, так как использование репозитория и отдельного метода сделает приложение легким.

В любой момент вы можете использовать spring JdbcTemplate, для которого требуется только источник данных (вы можете автоматически подключить его в своем тесте) и написать простой выбор для проверки всего, что вам нужно.

borino 21.11.2018 08:56
1
1
252
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете @Mock свой объект @Repository и с org.mockito.Mockito.verify и сможете проверить, выполняется ли Sql, написанный выше, при вызове. (запрос аутентификации) т.е. смоделировать AuditRepository и проверить объект.

verify(auditRepository).recordUserAudit(user_id,datetime, function_code, ipAddress);

Другие вопросы по теме