通过注释类来创建带有限定符的@MockBean?

2022-09-03 06:11:46

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

@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 {}

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


答案 1

因为使用注释意味着按名称选择bean,所以你可以用这样的代码为模拟设置一个名称:@Qualifier

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

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

// etc

答案 2

在类级别声明时,当前不支持提供限定符@MockBean

如果您想获得这样的支持,我建议您在Spring Boot问题跟踪器中请求它

否则,您需要继续在 字段上声明 。@MockBean@Qualifier


推荐