Выберите невозможное значение в выбранных входах с помощью Symfony DomCrawler

Я хотел бы проверить поведение моего приложения, если я отправляю неправильные значения в select входе в форме.

Это моя форма в HTML:

 <form (...)> (...) <select name="select_input"> <option value="1">text</option> </select> </select> 

В моем тесте, получите форму с искателем и попробуйте «выбрать» неправильное значение:

 $form['select_input'] = 9999999; $client->submit($form); /* EDIT */ /*I am expecting the user to not be redirected to the user page, and the server to respond with the same form, containing an error message */ $this->assertFalse($client->getResponse()->isRedirect('/success_page')); $this->assertEquals(1, $client->getCrawler()->filter('input.error')); 

Но в консоли я получаю сообщение:

 InvalidArgumentException: Input "user_profile[voteProfile]" cannot take "9999999" as a value (possible values: 1) 

Как я могу выбрать неправильное значение для проверки ответа? Можно было бы отправить неверное значение реальным сервером.

Функция disableValidation позволяет выбрать невозможные значения в параметрах:

 $form = $crawler->selectButton('button')->form(); $form->get('select_input')->disableValidation()->setValue(999999); $client->submit($form); 

И дело сделано!

В сообщении об ошибке указано «(возможные значения: 1)», которое соответствует одному возможному значению в вашей форме. Поэтому, действительно, я думаю, что вы получаете исключение, которое вы должны ожидать. Если реальный сервер должен был отправить неверное значение, я бы предположил, что это же исключение произойдет.

В своем тесте попробуйте добавить аннотацию, например:

 /** * @expectedException InvalidArgumentException */ public function testForm() { //test logic here } 

Или:

 public function testForm() { $this->setExpectedException('InvalidArgumentException'); } 

Дополнительная информация здесь