Doctrine orm 当cleanup=true时,在codeception中动态更改实体管理器

Doctrine orm 当cleanup=true时,在codeception中动态更改实体管理器,doctrine-orm,entitymanager,codeception,Doctrine Orm,Entitymanager,Codeception,我使用Cest类进行单元测试,每个实体有一个测试类,我在其中执行一些可以向数据库读/写记录的测试 我使用PostgreSQL,其中实体可以是不同模式的一部分,因此Entity1是Schema1的一部分,Schema1使用EntityManager 1,而Entity2是Schema2的一部分,使用EntityManager 2 在开始测试之前,每个Cest类在_before方法中定义Doctrin2模块的$em实体,并且工作正常 当我将cleanup=true设置为在事务中封装测试时,它将无法清

我使用Cest类进行单元测试,每个实体有一个测试类,我在其中执行一些可以向数据库读/写记录的测试

我使用PostgreSQL,其中实体可以是不同模式的一部分,因此Entity1是Schema1的一部分,Schema1使用EntityManager 1,而Entity2是Schema2的一部分,使用EntityManager 2

在开始测试之前,每个Cest类在_before方法中定义Doctrin2模块的$em实体,并且工作正常

当我将cleanup=true设置为在事务中封装测试时,它将无法清除(回滚事务),因为在初始化期间,codeception首先运行Doctrin2模块的_before方法,其中事务是根据初始/当前实体管理器设置的。当我在Cest中更改实体管理器时,初始实体管理器无法跟踪在不同实体管理器中发生的更改,并且它认为在测试结束时不会回滚任何内容

# unit.suite.yml
modules:
enabled: [Symfony2, Doctrine2, Asserts, UnitHelper]
config:
      Doctrine2:
          cleanup: true
我可以在Cest中以嵌套事务的形式启动自己的事务,但这违反了DRY原则。可以在_引导文件中初始化适当的实体管理器,但它不会是动态的,我不知道如何根据运行的Cest在那里进行更改

是否可以在运行Doctrin2模块的_before方法之前更改实体管理器?也许根本不需要使用任何操作,所有这些都可以通过其他设置来实现(如每个实体的测试套装等)