【问题标题】:PHPUnit form with uniqid带有uniqid的PHPUnit表单
【发布时间】:2015-10-23 07:51:03
【问题描述】:

我是第一次测试 PHPUnit。我想在表单上输入价值。但是“name”属性的值是前缀 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";

【问题讨论】:

    标签: phpunit sonata


    【解决方案1】:

    对于 SonataAdmin 和 symfony 功能测试:

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

    【讨论】:

    • 已弃用但 parse_str(parse_url($form->getFormNode()->getAttribute('action'))['query'],$output); $output['uniqid'] 完成这项工作。
    【解决方案2】:

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

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

    现在您可以只使用此名称而不是随机值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 2011-07-26
      • 1970-01-01
      • 2014-08-31
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多