带uniqid的PHPUnit形式

带uniqid的PHPUnit形式,phpunit,sonata,Phpunit,Sonata,我是第一次测试PHPUnit。我想在表单上输入值。但是“name”属性的值是前缀,带有uniqid()…因此我找不到输入字段…以下是表单: <input type="text" id="s5629e61aaa5fa_titre" name="s5629e61aaa5fa[titre]" required="required" class=" form-control"> 对于Sonatadmin和symfony功能测试: $form = $crawler->filter('f

我是第一次测试PHPUnit。我想在表单上输入值。但是“name”属性的值是前缀,带有uniqid()…因此我找不到输入字段…以下是表单:

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

对于Sonatadmin和symfony功能测试:

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

今天,我遇到了同样的挑战。@rafrsr的解决方案确实有效,但似乎不是一种正确的方法。更简单的方法是将这个uniqid值重写为对您有意义的值。因此,我的解决方案是将此方法添加到相关的SonataAdmin类中:

public function getUniqId()
{
    return 'my_custom_form_name';
}
现在,您可以使用此名称而不是随机值:

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

已被弃用,但需要parse_str(parse_url($form->getFormNode()->getAttribute('action'))['query'],$output)$输出['uniqid']执行此任务。
$form = $crawler->filter('form')->form();
$form["my_custom_form_name[name]"]->setValue('Size');