gpt4 book ai didi

unit-testing - symfony2 使用自定义验证器进行单元测试验证

转载 作者:行者123 更新时间:2023-12-04 04:55:34 24 4
gpt4 key购买 nike

我正在尝试为具有一些普通验证器和使用实体管理器和请求的自定义验证器的模型编写测试。如果出于某种原因这很重要,我将使用 phpunit 进行测试。

我在另一个测试中通过 stub 实体管理器和请求然后验证一些对象来测试自定义验证器。由于这证明自定义验证有效,我只需要测试正常验证,如果可能的话,只需将自定义验证器排除在外。

这是我的模型:

/**
* @MyAssert\Client()
*/
abstract class BaseRequestModel {

/**
* @Assert\NotBlank(message="2101")
*/
protected $clientId;

/**
* @Assert\NotBlank(message="2101")
*/
protected $apiKey;

// ...

}

在我的测试中,我得到了验证器,创建了一个对象,然后对其进行了验证。
$validator = ValidatorFactory::buildDefault()->getValidator();
$requestModel = new RequestModel();
$errors = $validator->validate($requestModel);

当然,这会失败,因为它找不到为 MyAssert\Client 定义的验证器,这是一个服务,需要通过一些依赖注入(inject)容器来解决。

任何人都知道如何 stub 自定义验证器或将其从 中排除。验证?

最佳答案

我会用这样的东西:

class MyTest extends Symfony\Bundle\FrameworkBundle\Test\WebTestCase
{
private function getKernel()
{
$kernel = $this->createKernel();
$kernel->boot();

return $kernel;
}

public function testCustomValidator()
{
$kernel = $this->getKernel();
$validator = $kernel->getContainer()->get('validator');

$violationList = $validator->validate(new RequestModel);

$this->assertEquals(1, $violationList->count());
// or any other like:
$this->assertEquals('client not valid', $violationList[0]->getMessage());
}
}

关于unit-testing - symfony2 使用自定义验证器进行单元测试验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209301/

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