在浏览器中,easyadmin 工作正常。但是,当我运行测试用例,在登录后将重定向逻辑断言到 EasyAdmin 的仪表板控制器时,它失败并出现以下错误:
Uncaught PHP Exception LogicException: "Unable to add global "ea" as the runtime or the extensions
正如以下评论中指出的那样,
https://github.com/EasyCorp/EasyAdminBundle/issues/5591#issuecomment-1405962016
在我看来,EasyAdmin twig 扩展是在 Twig 扩展和运行时初始化之后调用的
在扩展和运行时初始化并且 phpunit 应该通过之前,不应调用 easyadmin twig 扩展
我找到了解决问题的方法。
当在一个测试中执行多个请求时,从 Symfony 5.4 开始
Client
针对每个请求重新启动内核。这样就能够运行多个请求
在测试中,我应该在执行多个请求的测试用例中添加$this->client->enableReboot();
。
一次测试中的多个请求 发出请求后,后续请求将使客户端重新启动内核。这将从头开始重新创建容器,以确保请求被隔离并每次都使用新的服务对象。此行为可能会产生一些意想不到的后果:例如,安全令牌将被清除、Doctrine 实体将被分离等。
这是链接https://symfony.com/doc/current/testing.html#multiple-requests-in-one-test