контрольные примеры junit для приложения SpringBoot, которое использует объект не репозитория JPA - PullRequest
0 голосов
/ 09 ноября 2018

Я пишу компонент 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 также, кажется, работает - однако в настоящее время я не вижу способа проверить существование записи.

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

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

1 Ответ

0 голосов
/ 01 апреля 2019

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

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