首页 > 解决方案 > 运行 PHPUnit 时 Symfony 2.8 验证器弃用通知

问题描述

安装后我在我的项目上运行 PHPUnit symfony/phpunit-bridge。我正在将我的 Symfony 2.8 应用程序升级到 Symfony 3.4 LTS。

我收到以下弃用通知:

  4x: The Symfony\Component\Validator\ValidatorInterface::validate method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::validate method instead.
    4x in CourseTest::testRegexAssertion from CRMPiccoBundle\Tests\Entity

  4x: The "deep" option for the Valid constraint is deprecated since Symfony 2.5 and will be removed in 3.0. When traversing arrays, nested arrays are always traversed. When traversing nested objects, their traversal strategy is used.
    4x in CourseTest::testRegexAssertion from CRMPiccoBundle\Tests\Entity

在我的服务定义中,我将验证器设置为:

    calls:
        - [setValidator, ['@validator']]

当我查看“验证器”的 Symfony 服务定义时,我可以看到以下内容:

<parameter key="validator.class">Symfony\Component\Validator\Validator\ValidatorInterface</parameter>
<service id="validator" class="%validator.class%">
   <factory service="validator.builder" method="getValidator" />
</service>

但是,在我使用验证器的课堂上,我看到验证器输出为Symfony\Component\Validator\Validator\RecursiveValidator- 我不知道为什么?

use Symfony\Component\Validator\Validator\ValidatorInterface;

/**
 * @param ValidatorInterface $validator
 */
public function setValidator(ValidatorInterface $validator)
{
    dump(get_class($validator));
    $this->validator = $validator;
}

我还没有升级到 Symfony 3.4,所以我仍然在 2.8.36 上,打算在升级之前完成弃用。

标签: phpsymfonyphpunitsymfony-2.8symfony-3.3

解决方案


推荐阅读