I want to test my Symfony2 application with PHPUnit when a user submits a form without any data.
My validations are activared, so error messages are displayed correctly in a navigator. For example in the entity :
class Foo
{
/**
* @var string
*
* @Assert\NotBlank()
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @Assert\NotBlank()
* @ORM\Column(name="city", type="string", length=255)
*/
private $city;
}
And the type of this entity :
class FooType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('city', 'text');
}
// ...
}
When I submit the form without any data, the response contains 2 messages "This value should not be blank".
So in my tests I want to retrieve this 2 messages, but the filter function just returns 1 :
public function testShouldNotSaveANewFooWhenDataIsEmpty()
{
$crawler = $this->client->request('GET', '/foo/new');
$form = $crawler->selectButton('Add')->form(array(
'foo[name]' => '',
'foo[city]' => ''
));
$crawler = $this->client->submit($form);
echo $crawler->filter('html:contains("This value should not be blank")')->count(); // Should display 2, not 1
}
Have you got any idea please ?