Merge branch '3.3.x'

Closes gh-43053
This commit is contained in:
Andy Wilkinson 2024-11-06 14:23:15 +00:00
commit 362593019d
2 changed files with 33 additions and 0 deletions

View File

@ -336,6 +336,7 @@ public class MockitoPostProcessor implements InstantiationAwareBeanPostProcessor
SpyDefinition definition = this.spies.get(beanName); SpyDefinition definition = this.spies.get(beanName);
if (definition != null) { if (definition != null) {
bean = definition.createSpy(beanName, bean); bean = definition.createSpy(beanName, bean);
this.mockitoBeans.add(bean);
} }
return bean; return bean;
} }

View File

@ -50,6 +50,9 @@ class ResetMocksTestExecutionListenerTests {
@Autowired @Autowired
private ApplicationContext context; private ApplicationContext context;
@SpyBean
ToSpy spied;
@Test @Test
void test001() { void test001() {
given(getMock("none").greeting()).willReturn("none"); given(getMock("none").greeting()).willReturn("none");
@ -57,6 +60,7 @@ class ResetMocksTestExecutionListenerTests {
given(getMock("after").greeting()).willReturn("after"); given(getMock("after").greeting()).willReturn("after");
given(getMock("fromFactoryBean").greeting()).willReturn("fromFactoryBean"); given(getMock("fromFactoryBean").greeting()).willReturn("fromFactoryBean");
assertThat(this.context.getBean(NonSingletonFactoryBean.class).getObjectInvocations).isEqualTo(0); assertThat(this.context.getBean(NonSingletonFactoryBean.class).getObjectInvocations).isEqualTo(0);
given(this.spied.action()).willReturn("spied");
} }
@Test @Test
@ -66,6 +70,7 @@ class ResetMocksTestExecutionListenerTests {
assertThat(getMock("after").greeting()).isNull(); assertThat(getMock("after").greeting()).isNull();
assertThat(getMock("fromFactoryBean").greeting()).isNull(); assertThat(getMock("fromFactoryBean").greeting()).isNull();
assertThat(this.context.getBean(NonSingletonFactoryBean.class).getObjectInvocations).isEqualTo(0); assertThat(this.context.getBean(NonSingletonFactoryBean.class).getObjectInvocations).isEqualTo(0);
assertThat(this.spied.action()).isNull();
} }
ExampleService getMock(String name) { ExampleService getMock(String name) {
@ -119,6 +124,11 @@ class ResetMocksTestExecutionListenerTests {
return new NonSingletonFactoryBean(); return new NonSingletonFactoryBean();
} }
@Bean
ToSpyFactoryBean toSpyFactoryBean() {
return new ToSpyFactoryBean();
}
} }
static class BrokenFactoryBean implements FactoryBean<String> { static class BrokenFactoryBean implements FactoryBean<String> {
@ -161,6 +171,14 @@ class ResetMocksTestExecutionListenerTests {
} }
static class ToSpy {
String action() {
return null;
}
}
static class NonSingletonFactoryBean implements FactoryBean<ExampleService> { static class NonSingletonFactoryBean implements FactoryBean<ExampleService> {
private int getObjectInvocations = 0; private int getObjectInvocations = 0;
@ -183,4 +201,18 @@ class ResetMocksTestExecutionListenerTests {
} }
static class ToSpyFactoryBean implements FactoryBean<ToSpy> {
@Override
public ToSpy getObject() throws Exception {
return new ToSpy();
}
@Override
public Class<?> getObjectType() {
return ToSpy.class;
}
}
} }