Symfony2覆盖TEST环境中的checkMX约束


Symfony2 override checkMX constraint in TEST environment

我有一个设置了验证的Symfony表单(使用validations.yml文件中的定义)。在这个表单中是一个电子邮件字段,我在其中添加了checkMX验证器约束。这在正常使用下效果良好。http://symfony.com/doc/current/reference/constraints/Email.html#checkmx

然而,当运行我的测试套件时,没有互联网连接,这会暂停测试,因为验证器试图查找电子邮件地址域的DNS,但它无法查找DNS,必须等待超时。在任何情况下,在测试期间需要远程查找都不是理想的。

是否有一种方法可以从验证中删除此约束,但只能在运行TEST环境时删除?大概我只需要覆盖约束,但我不知道如何在每个环境中做到这一点。

感谢

您可以从控制器获取您的环境并将其传递给您的表单:

$env = $this->container->get( 'kernel' )->getEnvironment();
$oForm = $this->createForm(new Form($env));

然后在构建表单之前:

 public function __construct($env)
{
    $this->sEnv  = $env;
}

然后你做你的测试。

自Symfony 3.1 以来,此问题已得到修复

http://symfony.com/doc/current/components/phpunit_bridge.html#dns-敏感测试