|
22 | 22 | import java.util.Set;
|
23 | 23 |
|
24 | 24 | import jakarta.enterprise.context.ApplicationScoped;
|
| 25 | +import jakarta.enterprise.context.spi.CreationalContext; |
25 | 26 | import jakarta.enterprise.event.Observes;
|
26 | 27 | import jakarta.enterprise.inject.literal.InjectLiteral;
|
27 | 28 | import jakarta.enterprise.inject.spi.AfterBeanDiscovery;
|
| 29 | +import jakarta.enterprise.inject.spi.AfterDeploymentValidation; |
28 | 30 | import jakarta.enterprise.inject.spi.AnnotatedParameter;
|
29 | 31 | import jakarta.enterprise.inject.spi.Bean;
|
30 | 32 | import jakarta.enterprise.inject.spi.BeanManager;
|
@@ -68,29 +70,35 @@ private void processMockBeanParameters(List<? extends AnnotatedParameter<?>> par
|
68 | 70 | });
|
69 | 71 | }
|
70 | 72 |
|
71 |
| - void registerMocks(@Observes AfterBeanDiscovery event, BeanManager beanManager) { |
| 73 | + void registerOtherBeans(@Observes AfterBeanDiscovery event, BeanManager beanManager) { |
72 | 74 | // Register all mocks
|
73 | 75 | mocks.entrySet().forEach(entry -> {
|
74 |
| - Object eagerMock = Mockito.mock(entry.getKey(), |
75 |
| - Mockito.withSettings().defaultAnswer(entry.getValue().answer())); |
76 | 76 | event.addBean()
|
77 | 77 | .addType(entry.getKey())
|
78 | 78 | .scope(ApplicationScoped.class)
|
79 | 79 | .alternative(true)
|
80 | 80 | .createWith(inst -> {
|
81 |
| - Object mock; |
82 | 81 | Set<Bean<?>> beans = beanManager.getBeans(MockSettings.class);
|
83 | 82 | if (!beans.isEmpty()) {
|
84 | 83 | Bean<?> bean = beans.iterator().next();
|
85 | 84 | MockSettings mockSettings = (MockSettings) beanManager.getReference(bean, MockSettings.class,
|
86 | 85 | beanManager.createCreationalContext(null));
|
87 |
| - mock = Mockito.mock(entry.getKey(), mockSettings); |
| 86 | + return Mockito.mock(entry.getKey(), mockSettings); |
88 | 87 | } else {
|
89 |
| - mock = eagerMock; |
| 88 | + return Mockito.mock(entry.getKey(), Mockito.withSettings().defaultAnswer(entry.getValue().answer())); |
90 | 89 | }
|
91 |
| - return mock; |
92 | 90 | })
|
93 | 91 | .priority(0);
|
94 | 92 | });
|
95 | 93 | }
|
| 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 | + } |
96 | 104 | }
|
0 commit comments