Не удается получить доступ к службам в тестах

Когда я пытаюсь вызвать контейнер через

self::bootKernel();
$container = static::getContainer();

Я получаю сообщение об ошибке «LogicException: не удалось найти службу «test.service_container». Попробуйте обновить конфигурацию «framework.test» до «true». Хотя мой config/packages/test/framework.php выглядит так

return static function (FrameworkConfig $framework): void
{
    $framework
        ->test(true);

    $session = $framework->session();

    $session
        ->storageFactoryId('session.storage.factory.mock_file');
};

Я могу добраться до самого контейнера через

$container = self::$kernel->getContainer();

однако я не могу получить доступ ни к одной из своих служб. Потому что я получаю сообщение об ошибке каждый раз, когда "Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: служба или псевдоним "App\User\Infrastructure\Repository\UserRepository" был удален или встроен при компиляции контейнера. Вы должны либо сделать его общедоступным , или прекратите использовать контейнер напрямую и вместо этого используйте внедрение зависимостей».

Учитывая, что есть как минимум дюжина или около того недавних одинаковых вопросов, возможно, вы сэкономите немного времени, подробно описав, какие из различных решений вы пробовали?

Cerad 04.04.2022 19:22

Если вы хотите получить доступ к своему сервису от Container, вы должны сделать его общедоступным: # config/services.yaml services: session.storage.factory.mock_file: public: true

Lounis 05.04.2022 10:19

до сих пор я пытался сделать службы общедоступными, я также создал специальный файл services_test.php, но ни одно из решений не помогает

dominik 06.04.2022 17:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема решилась модификацией метода configureContainer в ядре. Нужно было добавить import services_test.php

$container->import($this->getConfigDir() . '/{services}_' . $this->environment . '.php');

Другие вопросы по теме