【发布时间】:2015-03-21 23:48:45
【问题描述】:
表单包含一个种族选择选项:
Ethnicity: <select id="household_members_0_ethnicity" name="household[members][0][ethnicity]" class="smallform">
<option value=""></option>
<option value="2">AfrAm</option>
<option value="3">Asian</option>
<option value="1" selected="selected">Cau</option>
<option value="6">HaPI</option>
<option value="4">Hisp</option>
<option value="5">NtvAm</option>
<option value="7">Oth</option>
<option value="8">Unk</option>
</select>
功能测试包含
$form["household[members][0][ethnicity]"]->select(6);
然后返回
InvalidArgumentException:输入“家庭[成员][0][种族]” 不能将“6”作为值(可能的值: )。
请注意,可能的值为空。我尝试使用select("6") 和select("HaPI") 以及其他选项的组合进行测试,但均无济于事。
Fwiw,有一个类似的性别选择,$form["household[members][0][sex]"]->select('Male'); 不会抛出异常。
我也尝试过以数组形式输入 $form() 值,结果没有变化。
性别和种族字段的唯一区别是性别是一个明确的选择字段,种族是一个实体字段。
$form["household[members][0][ethnicity]"]->availableOptionValues(); 返回一个空数组;
$form["household[members][0][sex]"]->availableOptionValues(); 返回一个值和选项数组;
【问题讨论】:
-
所以真正的问题是为什么没有选项可选?由于这是一个实体,
ethnicity在数据库中有值吗? -
@A.L 可以肯定的是,数据库已被填充 - 这就是显示选项的来源。它们不是“硬连线”的。
-
好的,但是你有消息(可能的值:)。所以没有选项可供选择。
-
@A.L 因此我的问题是 - 我如何选择一个应该可用的选项,在页面源中可用,但在功能测试中不可用?答案可能在于“为什么可能的值是空的?”的背后。问题。
-
@A.L 你一开始是对的——我完全忘记了我使用的是 sqlite 测试数据库。填充数据库的唯一方法是构建夹具,感谢您播下怀疑的种子。将此作为解决方案发布,我很乐意接受。
标签: php symfony functional-testing