Skip to content

Commit 3908ed2

Browse files
sarcherdaFish
authored and
daFish
committed
Handle "constraints" option in form unit testing
In the current documentation, although a mocked `ValidatorInterface` is being passed to the `FormTypeValidatorExtension`, the actual `validate()` method in it is returning null. This causes any test against a form type that utilizes the extension's `constraints` option to fail, because of the following code in `Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener`: ```php // Validate the form in group "Default" $violations = $this->validator->validate($form); foreach ($violations as $violation) { // Allow the "invalid" constraint to be put onto // non-synchronized forms $allowNonSynchronized = Form::ERR_INVALID === $violation->getCode(); $this->violationMapper->mapViolation($violation, $form, $allowNonSynchronized); } ``` Note the `foreach` loop that is expecting an array. Since the documentation uses the `ValidatorExtension` as a specific example, I think it would be nice for the example code to handle this case, preventing the user from having to dig deeper into the code to discover the problem.
1 parent 45d0e00 commit 3908ed2

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

cookbook/form/unit_testing.rst

+4-1
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,15 @@ on other extensions. You need add those extensions to the factory object::
183183
protected function setUp()
184184
{
185185
parent::setUp();
186+
187+
$validator = $this->getMock('\Symfony\Component\Validator\ValidatorInterface');
188+
$validator->method('validate')->will($this->returnValue(array()));
186189

187190
$this->factory = Forms::createFormFactoryBuilder()
188191
->addExtensions($this->getExtensions())
189192
->addTypeExtension(
190193
new FormTypeValidatorExtension(
191-
$this->getMock('Symfony\Component\Validator\ValidatorInterface')
194+
$validator
192195
)
193196
)
194197
->addTypeGuesser(

0 commit comments

Comments
 (0)