如何在代码和laravel中使用multiselect

时间:2013-07-16 15:17:31

标签: laravel laravel-4 codeception

是否可以在Codeception上使用多选框?

我的表单代码:

<form accept-charset="utf-8" class="form-vertical" id="solicitor-form" method="POST" action="http://mytest.dev/role">
  <select multiple="true" id="optgroup" name="solicitor[]">
     <option value="1" selected>Yorkshire</option>
     <option value="2" selected>Quarry</option>
     <option value="3" selected>William Hurst</option>
  </select></div></div>                            
  <input class="btn-large btn-success btn" type="submit" value="Update Access">
</form> 

我尝试过这样的测试:

 $i->SeeOptionIsSelected("#solicitor-form", 'Yorkshire');
 $i->SeeOptionIsSelected("#solicitor-form", 'Quarry');

但是在SECOND select上代码失败。所以我试过这个:

 $i->SeeOptionIsSelected('#solicitor-form select[name=solicitor[]]', 'Yorkshire');
 $i->SeeOptionIsSelected('#solicitor-form select[name=solicitor[]]', 'Quarry');

但它似乎无法正确解析solicitor[],特别是[],因为它会因模式匹配而自行解决。

编辑:我试过Daverts这样回答:

$i->selectOption('optgroup',array('Quarry', 'Yorkshire'));

但这是运行测试时的输出:

* I select option "optgroup","lambda function"

似乎“lambda函数”没有返回正确的结果?

2 个答案:

答案 0 :(得分:2)

抱歉延误了。 看起来这个功能没有记录。对不起,我在1.6.3发布时完全忘了更新文档。

您可以将一组选项作为第二个参数传递,以选择多个选项。

    $I->amOnPage('/form/select_multiple');
    $I->selectOption('What do you like the most?',array('Play Video Games', 'Have Sex'));
    $I->click('Submit');

谢谢,我会尽快更新参考资料。

答案 1 :(得分:2)

就我在我的应用程序中看到的而言,错误与[]正好相同,例如我有这个选择:

<select multiple="true" class="span h300" id="products[]" name="products[]">...</select>

当我这样做时:

$I->selectOption('Products', array('value', 'someOtherValue') );

我会得到和你一样的错误。

正如你所看到我有一些额外的类,.span和.h300所以我使用了.h300选择器,它在该页面上是唯一的,测试工作正常,值在db中,验证按预期工作。

总而言之,我的选择器有效:

$I->selectOption('.h300', array('value', 'someOtherValue') );

关于这个问题只需2美分,现在没有足够的时间来调查导致问题的原因[] ...