【发布时间】:2013-07-24 13:39:09
【问题描述】:
我正在尝试测试使用实体管理器的自定义验证器。
验证器在表单中工作正常,但我在测试它时仍然遇到问题:它永远不会引发违规。
我的验证器是一个类验证器,但在字段姓氏$this->context->addViolationAt('lastname',$message,$param);
我的测试类中有代码:
public function testNoMoreThreeBatman() {
$validator = Validation::createValidatorBuilder()->getValidator();
//I have already checked I got my test database ok, full with what I want
//I create a new one with the name 'wayne' (so it'll be not valid)
$user = new User();
$user->setLastname('wayne');
$violationList = $validator->validate($user);
$this->assertEquals(1, $violationList->count());
}
我找到了很多主题,但没有人给我提示。我用另一个自定义验证进行了测试,一个简单的验证,我没有问题。 我想知道问题是否可能来自它是一个类验证器这一事实,或者它会将违规添加到一个字段中
因为我的答案是在评论中,所以我在此处发布回复以提高知名度:
正确的是 Validation::createValidatorBuilder()->getValidator();
代替 $validator = Validation::createValidatorBuilder()->getValidator();
【问题讨论】:
-
嗯。你的验证器是否被调用?我怀疑不是。我假设您将 User 映射到 validation.yml 中的验证器?如果是这样,那么您需要更多的东西来将验证器与配置文件联系起来。
-
如何查看我的验证器是否被调用?是的,我的验证器映射在我的 validation.yml 中,当我在我的表单中使用它时工作正常
标签: validation testing symfony symfony-2.3