AutoWire services_test.yaml->没有ID为'service.a'的节点

时间:2018-11-30 13:10:43

标签: symfony symfony4

在SF4.2中迁移到AutoWire后,无法使单元测试正常工作 正常路线可以正常工作。

services.yaml:

services:
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        public: false       # Allows optimizing the container by removing unused services; this also means

# enable AW on controllers
    KRNApiBundle\Controller\:
        resource: '../../Controller'
        tags: ['controller.service_arguments']

# AutoWireAliases
    MyClass: '@service.a'

    service.a:
      class: MyClass

services_test.yaml,有一些,但没有service.a已定义/超载

任何测试都在运行,但在(WebTestCase)失败:

$client = static::createClient();

InvalidArgumentException: There is no node with id "service.a".

当我将service.a的定义复制到services_test.yaml时-它起作用。 但是我想要并且必须避免两次定义所有服务(引入了巨大的错误表面)

2 个答案:

答案 0 :(得分:2)

看起来像个错误-应该由https://github.com/symfony/symfony/pull/29393修复

答案 1 :(得分:0)

在找到仍然使用-> get()很奇怪的控制器和服务之后,它以某种方式自行解决。