Skip to content

Commit d0d5454

Browse files
committed
Revert "Remove invalid check for String-based FactoryBean.OBJECT_TYPE_ATTRIBUTE"
This reverts commit 279f822. See gh-36659
1 parent 75bb862 commit d0d5454

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoPostProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,12 @@ private Set<String> getExistingBeans(ConfigurableListableBeanFactory beanFactory
252252
Set<String> beans = new LinkedHashSet<>(
253253
Arrays.asList(beanFactory.getBeanNamesForType(resolvableType, true, false)));
254254
Class<?> type = resolvableType.resolve(Object.class);
255+
String typeName = type.getName();
255256
for (String beanName : beanFactory.getBeanNamesForType(FactoryBean.class, true, false)) {
256257
beanName = BeanFactoryUtils.transformedBeanName(beanName);
257258
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
258259
Object attribute = beanDefinition.getAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE);
259-
if (resolvableType.equals(attribute) || type.equals(attribute)) {
260+
if (resolvableType.equals(attribute) || type.equals(attribute) || typeName.equals(attribute)) {
260261
beans.add(beanName);
261262
}
262263
}

spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/MockitoPostProcessorTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ void cannotMockMultipleQualifiedBeans() {
7373
+ " expected a single matching bean to replace but found [example1, example3]");
7474
}
7575

76+
@Test
77+
void canMockBeanProducedByFactoryBeanWithStringObjectTypeAttribute() {
78+
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
79+
MockitoPostProcessor.register(context);
80+
RootBeanDefinition factoryBeanDefinition = new RootBeanDefinition(TestFactoryBean.class);
81+
factoryBeanDefinition.setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, SomeInterface.class.getName());
82+
context.registerBeanDefinition("beanToBeMocked", factoryBeanDefinition);
83+
context.register(MockedFactoryBean.class);
84+
context.refresh();
85+
assertThat(Mockito.mockingDetails(context.getBean("beanToBeMocked")).isMock()).isTrue();
86+
}
87+
7688
@Test
7789
void canMockBeanProducedByFactoryBeanWithClassObjectTypeAttribute() {
7890
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();

0 commit comments

Comments
 (0)