1

我正在尝试使vatin-bundle与 Symfony 6 兼容。

但测试失败

在编译容器时,“验证器”服务或别名已被删除或内联。您应该将其公开,或者直接停止使用容器并改用依赖注入。

这似乎是Symfony 6中的新功能

static::getContainer() 中的容器实际上是一个特殊的测试容器。它使您可以访问公共服务和未删除的私人服务服务。

validator再次在测试中可用的首选方式是什么?

我发现的唯一方法是创建自己的别名,例如

services:
    myvalidator:
        alias: validator
        public: true

并使用新别名。有没有更好的办法?

4

1 回答 1

1

如果该服务被删除,那么无论如何都无法再访问它。这不是可见性的问题,服务不再存在。所以你需要防止服务被删除:创建别名是最好和最简单的方法。

这已经被这里的维护者证实了。

您只能在测试期间创建别名,并且仍然可以访问原始服务。(例如->get('validator')。创建别名后,不再删除原始服务。

我认为这在 Symfony 6 中并不是什么新东西,但它是 Symfony 4.4 以来的新事物。尽管现在在 Symfony 6 上是真的,因为它删除了以前不推荐的行为,事情可能已经改变了。

于 2022-01-25T12:41:20.437 回答