Пружинная загрузка JPA не сохраняет изменений в одной области тестирования - PullRequest
0 голосов
/ 23 мая 2018

Я использую Spring Boot 2.0.1 с spring-boot-starter-data-jpa.

В базе данных у меня 3 записи.Я выполняю такой тест:

@Test
public void shouldDeleteByName() {
    service.deleteOneByName("SOME NAME"); // Out of 3 records 1 was deleted
    List<Customer> customers = service.selectAll();
    assertThat(customers).hasSize(2); // FAILS
assertThat(customers).extracting("name").doesNotContain("SOME NAME"); // FAILS
}

Нет ошибок, я вижу, что транзакция совершена.

Кажется, что транзакция либо отменяется до того, как selectAll, либо selectAll не делаетувидеть изменения пока нет.

Что я делаю не так?

1 Ответ

0 голосов
/ 23 мая 2018

Что ж, похоже, это решило мою проблему:

  1. Я изменил свою конфигурацию транзакции DB DB с DataSourceTransactionManager на JpaTransactionManager, пример выложен в конце.

  2. Я аннотировал свой сервис как @ Transactional.

  3. Я аннотировал свой тест как @Transactional (без этого работает, но изменения являются постоянными).Тест выполняется в первый раз, но не проходит во второй раз.

Код для первого шага WORKING ONE :

@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...