Skip to content

Commit a1e484f

Browse files
committed
Trigger the creation of the bean
Signed-off-by: Jorge Bescos Gascon <jorge.bescos.gascon@oracle.com>
1 parent ec28e90 commit a1e484f

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

microprofile/testing/mocking/src/main/java/io/helidon/microprofile/testing/mocking/MockBeansCdiExtension.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@
2222
import java.util.Set;
2323

2424
import jakarta.enterprise.context.ApplicationScoped;
25+
import jakarta.enterprise.context.spi.CreationalContext;
2526
import jakarta.enterprise.event.Observes;
2627
import jakarta.enterprise.inject.literal.InjectLiteral;
2728
import jakarta.enterprise.inject.spi.AfterBeanDiscovery;
29+
import jakarta.enterprise.inject.spi.AfterDeploymentValidation;
2830
import jakarta.enterprise.inject.spi.AnnotatedParameter;
2931
import jakarta.enterprise.inject.spi.Bean;
3032
import jakarta.enterprise.inject.spi.BeanManager;
@@ -68,29 +70,35 @@ private void processMockBeanParameters(List<? extends AnnotatedParameter<?>> par
6870
});
6971
}
7072

71-
void registerMocks(@Observes AfterBeanDiscovery event, BeanManager beanManager) {
73+
void registerOtherBeans(@Observes AfterBeanDiscovery event, BeanManager beanManager) {
7274
// Register all mocks
7375
mocks.entrySet().forEach(entry -> {
74-
Object eagerMock = Mockito.mock(entry.getKey(),
75-
Mockito.withSettings().defaultAnswer(entry.getValue().answer()));
7676
event.addBean()
7777
.addType(entry.getKey())
7878
.scope(ApplicationScoped.class)
7979
.alternative(true)
8080
.createWith(inst -> {
81-
Object mock;
8281
Set<Bean<?>> beans = beanManager.getBeans(MockSettings.class);
8382
if (!beans.isEmpty()) {
8483
Bean<?> bean = beans.iterator().next();
8584
MockSettings mockSettings = (MockSettings) beanManager.getReference(bean, MockSettings.class,
8685
beanManager.createCreationalContext(null));
87-
mock = Mockito.mock(entry.getKey(), mockSettings);
86+
return Mockito.mock(entry.getKey(), mockSettings);
8887
} else {
89-
mock = eagerMock;
88+
return Mockito.mock(entry.getKey(), Mockito.withSettings().defaultAnswer(entry.getValue().answer()));
9089
}
91-
return mock;
9290
})
9391
.priority(0);
9492
});
9593
}
94+
95+
void eagerInitialization(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
96+
mocks.entrySet().forEach(entry -> {
97+
Bean<?> bean = beanManager.resolve(beanManager.getBeans(entry.getKey()));
98+
CreationalContext<?> creationalContext = beanManager.createCreationalContext(bean);
99+
Object eagerMock = beanManager.getReference(bean, entry.getKey(), creationalContext);
100+
// Triggers the instance of the bean
101+
eagerMock.toString();
102+
});
103+
}
96104
}

0 commit comments

Comments
 (0)