Юнит-тест Srping - LazyInitializationException: не удалось лениво инициализировать коллекцию - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь протестировать некоторые из моих конечных точек, но для этого мне нужно «смоделировать» некоторые сторонние веб-зацепки. Все отлично работает, кроме той части, где я использую сервис для обновления данных для входящего webhook.

Исключение, которое я получаю:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: mz.server.hibernate.model.PlaceSubscriptionEntity.placeSubscriptionEvents, could not initialize proxy - no Session

    at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:597)
    at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:216)
    at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:576)
    at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:147)
    at org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:188)
    at java.util.Spliterators$IteratorSpliterator.estimateSize(Spliterators.java:1821)
    at java.util.Spliterator.getExactSizeIfKnown(Spliterator.java:408)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:497)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)

Все мои живые тесты расширяют этот абстрактный класс здесь:

@FlywayTest
@RunWith(SpringRunner.class)
@SpringBootTest(
        webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,
        properties = "spring.profiles.active=test"
)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
@TestExecutionListeners({
        DependencyInjectionTestExecutionListener.class,
        FlywayTestExecutionListener.class
})
public abstract class AbstractLiveTest {

    @Value("${security.jwt.client-id}")
    protected String clientId;

    @Value("${security.jwt.client-secret}")
    protected String clientSecret;

    @Value("${security.jwt.client-secret-plain}")
    protected String clientSecretPlain;

    @Value("${server.port}")
    protected Integer serverPort;

    @Autowired
    protected TestRestTemplate restTemplate;

}

Как предложено в другом ответе, я попытался добавить @Tranasctional к своим методам модульного тестирования:

@Test
@Transactional
public void whenCreateSubscription() throws Exception {
     // ..
}

но это не имеет никакого эффекта.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...