Doctrine 事件订阅者导致集成测试失败并显示“已经有一个活动事务”消息

问题描述 投票:0回答:0

我有一个如下所示的事件订阅者:

class MySubscriber implements EventSubscriberInterface {

    public function __construct(
        private MyService $service,) {
    }

    public function getSubscribedEvents(): array {
        return [
            Events::postUpdate,
            Events::postPersist
        ];
    }
}

没有这个事件订阅者类,我的测试运行良好,但启用这个,他们甚至没有运行。在测试之前,我正在创建数据库模式、加载固定装置和清除缓存,所有这些都工作正常,在测试执行时,我得到下面列出的错误。

这是一个非常奇怪的问题,因为它在本地 PHPUnit 测试期间没有出现,但在我的 CI/CD 管道中它失败并显示以下消息:

PHPUnit 9.6.5 by Sebastian Bergmann and contributors.
There is already an active transaction

一个可能的原因是 DAMA doctrine test bundle,但我一直无法弄清楚如何调试它。

文件phpunit.xml.dist

....
  <extensions>
    <extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
  </extensions>

我该如何解决这个问题?

我正在使用容器在 CI/CD 管道中使用 PHPUnit 运行 PHP 集成测试。这个事件订阅者类在某种程度上是个问题,没有它,一切正常。

php doctrine-orm doctrine phpunit
© www.soinside.com 2019 - 2024. All rights reserved.