Java 定义2个数据源时模拟EntityManagerFactory

Java 定义2个数据源时模拟EntityManagerFactory,java,spring,spring-data-jpa,mockito,Java,Spring,Spring Data Jpa,Mockito,因此,我的应用程序连接到2个Mysql数据库。 由于我添加了对2个Dbs的支持,我的Mockito测试最终出现以下异常: Caused by: java.lang.IllegalStateException: Unable to register mock bean javax.persistence.EntityManagerFactory expected a single matching bean to replace but found [myCustomEntityManager1,

因此,我的应用程序连接到2个Mysql数据库。 由于我添加了对2个Dbs的支持,我的Mockito测试最终出现以下异常:

Caused by: java.lang.IllegalStateException: Unable to register mock bean javax.persistence.EntityManagerFactory expected a single matching bean to replace but found [myCustomEntityManager1, myCustomerEntityManager2]
这就是它当前的声明方式

@MockBean
private EntityManagerFactory entityManagerFactory;
下面是我如何声明自定义entityManager的:

@Bean
public LocalContainerEntityManagerFactoryBean myCustomEntityManager1() {
    return entityManagerConfiguration.getEntityManager(MY_PACKAGE, getDatasource());
}
@MockBean接受属性,该属性允许您指定要注册或替换的bean的名称

就你而言:

@MockBean(name="myCustomEntityManager1")
private EntityManagerFactory entityManagerFactory;
你也可以这样做

当name()属性可用时,确定bean名称的默认策略是使用@bean方法的名称。这既方便又直观,但如果需要显式命名,则可以使用name属性(或其别名值)。还要注意,name接受字符串数组,允许单个bean使用多个名称(即主bean名称加上一个或多个别名)