Bonjour,
je veux pouvoir créer un formulaire avec le type ChoiceType, j'ai défini les choix et les contraintes sur l'entité.
Maintenant, je veux tester l'affichage d'une erreur sur le formulaire lorsqu'un choix invalide est envoyé, mais Symfony me lance une erreur InvalidArgumentException.
Ce que je fais
Voici le code du formulaire :
class AccountFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('type', ChoiceType::class, [
'choices' => [
'Professionnel' => 'PERSONNAL',
'Personnel' => 'PROFESSIONAL',
]
]);
}
// reste du code...
}
Et voici mon code de test phpunit:
class AccountTest extends WebTestCase {
public function testShopShowErrorsOnInvalidInput() {
$client = self::createClient();
$crawler = $client->request('GET/', '/profile/create');
$form = $crawler->selectButton('Créer votre compte')->form([
'type' => 'custom',
]);
$crawler = $client->submit($form);
// la classe css '.invalid-feedback' indique qu'une erreur s'est bien affichée sur mon
// formulaire
$this->assertSame(1, $crawler->filter('.invalid-feedback')->count());
}
}
Ce que je veux
Je veux que l'erreur s'affiche sur le formulaire, c'est-à-dire que mon test passe.
Ce que j'obtiens
Symfony m'affiche une erreur :
InvalidArgumentException : Input "type" cannot take "custom" as a value (possible values: "PERSONAL", "PROFESSIONAL").