首页 > 解决方案 > 通过注释类创建带有限定符的@MockBean?

问题描述

在我的 Spring Boot 测试中,我使用了 2 个具有不同限定符的模拟 bean:

@RunWith(SpringRunner.class)
@SpringBootTest
class HohoTest {
    @MockBean @Qualifier("haha") IHaha ahaha;
    @MockBean @Qualifier("hoho") IHaha ohoho;
}

由于我没有明确使用这些 bean,我宁愿将它们从类主体中移开,因为@MockBean注释现在是可重复的:

@RunWith(SpringRunner.class)
@SpringBootTest
@MockBean(IHaha.class)
@MockBean(IHaha.class)
class HohoTest {}

但是,我还需要传入一个限定符,因为它们具有相同的类型。关于如何实现这一目标的任何想法?

标签: javaspring-bootspring-testspring-bean

解决方案


因为使用注解@Qualifier意味着按名称选择 bean,所以您可以使用如下代码为 mock 设置名称:

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {JsonMapperConfig.class})
public class IntegrationFlowTest {

    @MockBean(name = "s3MessageRepository")
    private S3Repository s3MessageRepository;

// etc

推荐阅读