我有多辆公共汽车
framework:
messenger:
default_bus: messenger.bus.command
buses:
messenger.bus.command: ~
messenger.bus.query: ~
在单元测试中,我有类似的东西
$this->commandBus = static::$container->get('messenger.bus.command');
我知道
Symfony \ Component \ DependencyInjection \ Exception \ ServiceNotFoundException: “ messenger.bus.command”服务或别名已被删除或 在编译容器时内联。你应该要么做到 公共,或停止直接使用容器并使用依赖项 而是注射。
如何解决?谢谢。
答案 0 :(得分:0)
Symfony 4.1添加了“ test container”,它允许访问原本属于私有服务的内容。但是,您还需要显式make the service public(至少在您的测试环境内),因此不会将其删除。
# 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, '...');
// ...
}