Мессенджер с несколькими автобусами - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть несколько автобусов

framework:
    messenger:
        default_bus: messenger.bus.command
        buses:
            messenger.bus.command: ~
            messenger.bus.query: ~

В моих модульных тестах у меня что-то подобное

$this->commandBus = static::$container->get('messenger.bus.command');

Я получаю

Symfony \ Component \ внедрение зависимости \ Exception \ ServiceNotFoundException: Сервис или псевдоним messenger.bus.command был удален или встроенный, когда контейнер был скомпилирован. Вы должны либо сделать это public или прекратите использование контейнера напрямую и используйте зависимость вместо инъекции.

Как это исправить? Спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

Symfony 4.1 добавляет тестовый контейнер , который позволяет получить доступ к частным сервисам. Однако вам также потребуется явно сделать службу общедоступной (по крайней мере, в вашей тестовой среде), чтобы она не удалялась.

# config/services.yaml
services:
    test.messenger.bus.command:
        alias: messenger.bus.command
        public: true

class AddUserCommandTest extends WebTestCase
{
    private function assertUserCreated()
    {
        self::bootKernel();

        // gets the special container that allows fetching private services
        $container = self::$container;

        $this->assertTrue(self::$container->get('security.password_encoder')->isPasswordValid($user, '...');
        // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...