gpt4 book ai didi

Symfony2 : Testing entity validation constraints

转载 作者:行者123 更新时间:2023-12-02 08:49:27 25 4
gpt4 key购买 nike

有人有在 Symfony2 中对实体的验证约束进行单元测试的好方法吗?

理想情况下,我希望能够访问单元测试中的依赖注入(inject)容器,这样我就可以访问验证器服务。一旦我有了验证器服务,我就可以手动运行它:

$errors = $validator->validate($entity);

我可以扩展WebTestCase,然后创建一个客户端来按照文档访问容器,但感觉不对。 WebTestCaseclient 在文档中读取更多的是作为一个整体来测试 actions 的工具,因此使用它来进行单元测试感觉很糟糕测试一个实体。

那么,有谁知道如何 a) 获取容器或 b) 在单元测试中创建验证器?

最佳答案

好吧,既然这得到了两票,我想其他人也感兴趣。

我决定拿出我的铲子,并惊喜地发现(无论如何到目前为止)这并不难完成。

我记得每个 Symfony2 组件都可以在独立模式下使用,因此我可以自己创建验证器。

查看文档:https://github.com/symfony/Validator/blob/master/ValidatorFactory.php

我意识到,既然有一个 ValidatorFactory,那么创建一个验证器就很简单了(特别是对于我这样通过注释完成的验证,尽管如果您查看我上面链接的页面上的文档 block ,您也会找到验证的方法xml 和 yml)。

第一:

# Symfony >=2.1
use Symfony\Component\Validator\Validation;
# Symfony <2.1
use Symfony\Component\Validator\ValidatorFactory;

然后:

# Symfony >=2.1
$validator = Validation::createValidatorBuilder()->enableAnnotationMapping()->getValidator();
# Symfony <2.1
$validator = ValidatorFactory::buildDefault()->getValidator();

$errors = $validator->validate($entity);

$this->assertEquals(0, count($errors));

我希望这对那些良心不允许他们只使用 WebTestCase 的人有所帮助;)。

关于Symfony2 : Testing entity validation constraints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com