Возникает в функциональных тестах PHPUnit с использованием клиента, открывающего указанные URL-адреса.
1) MyBundle\Tests\Controller\ControllerTest::testRoute
Symfony\Component\DependencyInjection\Exception\LogicException: Resetting the container is not allowed when a scope is active.
Решение
Переопределить в тесте статический метод суперкласса KernelTestCaseAncestor
, в котором сбрасывается контейнер, что и служит причиной ошибки.
1 2 3 4 5 6 7 8 9 10 | protected static function ensureKernelShutdown() { if (null !== static::$kernel) { // $container = static::$kernel->getContainer(); static::$kernel->shutdown(); // if ($container instanceof ResettableContainerInterface) { // $container->reset(); // } } } |
Тест, в котором проверяется код ответа URL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | class ControllerTest extends WebTestCase { /** * @var Client */ protected $client; public function setUp() { $this->client = static::createClient([], [ 'PHP_AUTH_USER' => 'testuser', 'PHP_AUTH_PW' => 'password', ]); $container = $this->client->getContainer(); } /** * Проверить доступность URL */ public function testFormatRoutes() { $url = '/order'; $crawler = $this->client->request('GET', $url); $this->assertTrue( $this->client->getResponse()->isSuccessful(), "URL недоступен: $url (код {$this->client->getResponse()->getStatusCode()})" ); } /** * Подавить ошибку во время тестов */ protected static function ensureKernelShutdown() { if (null !== static::$kernel) { static::$kernel->shutdown(); } } } |