Spring @Transactional - можно ли проверить количество транзакций? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть класс API, помеченный @Transactional, как показано.Некоторое подмножество методов дополнительно обозначено readOnly=true.При написании тестов есть ли способ проверить количество транзакций, которые действительно имеют место?Подумайте, если реализация метода delete называется методом exist, то при тестовом вызове delete должна произойти только одна транзакция.Однако, если сам тест вызывает метод exist перед вызовом delete, тогда должно произойти 2 транзакции.

@Transactional
public class AnApi {

    public AnEntity create(EntityData data) {...}

    public void delete(Long id) {...}

    @Transactional(readOnly = true)
    public boolean exists(Long id) {...}
}

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

1 Ответ

0 голосов
/ 09 октября 2018

Это не должно быть слишком сложно.

Spring использует PlatfromTransactionManager для управления транзакциями.Если вы зарегистрируете упакованный диспетчер транзакций, который реализует этот интерфейс, делегировав его фактическому диспетчеру транзакций, вы сможете легко подсчитать количество вызовов / количество возвращенных транзакций.

...