2015-10-23 2 views
0

Я впервые тестирую PHPUnit. Я хочу добавить значение в форму. Но значение «имя» attribut является префиксом с uniqid() ... так что я не могу найти поле ввода ... Здесь формы:PHPUnit form with uniqid

<input type="text" id="s5629e61aaa5fa_titre" name="s5629e61aaa5fa[titre]" required="required" class=" form-control"> 

И этот тест я Функциональный хочу :

$form = $crawler->filter('button[type=submit]') 
       ->eq(0) 
       ->form(array('')); 

    var_dump($form); 

    $form['titre'] = "Mon titre"; 

ответ

0

Для SonataAdmin и фреймворка функциональных тестов:

$form = $crawler->filter('form')->form(); 
/** @var string $uniqid */ 
parse_str(parse_url($form->getFormNode()->getAttribute('action'))['query']); 
$form["{$uniqid}[name]"]->setValue('Size'); 
1

Сегодня я столкнулся с той же проблемой. Решение @rafrsr действительно работало, но не казалось правильным способом сделать это. Более простым способом было бы переопределить это значение uniqid на что-то, что для вас что-то значит. Таким образом, мое решение, чтобы добавить этот метод к соответствующему классу SonataAdmin:

public function getUniqId() 
{ 
    return 'my_custom_form_name'; 
} 

Теперь вы можете использовать это имя вместо случайной величины:

$form = $crawler->filter('form')->form(); 
$form["my_custom_form_name[name]"]->setValue('Size');