【问题标题】:Cannot select option value in functional test无法在功能测试中选择选项值
【发布时间】: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]"]-&gt;select(6);

然后返回

InvalidArgumentException:输入“家庭[成员][0][种族]” 不能将“6”作为值(可能的值: )。

请注意,可能的值为空。我尝试使用select("6")select("HaPI") 以及其他选项的组合进行测试,但均无济于事。

Fwiw,有一个类似的性别选择,$form["household[members][0][sex]"]-&gt;select('Male'); 不会抛出异常。

我也尝试过以数组形式输入 $form() 值,结果没有变化。

性别和种族字段的唯一区别是性别是一个明确的选择字段,种族是一个实体字段。

$form["household[members][0][ethnicity]"]-&gt;availableOptionValues(); 返回一个空数组;

$form["household[members][0][sex]"]-&gt;availableOptionValues(); 返回一个值和选项数组;

【问题讨论】:

  • 所以真正的问题是为什么没有选项可选?由于这是一个实体,ethnicity 在数据库中有值吗?
  • @A.L 可以肯定的是,数据库已被填充 - 这就是显示选项的来源。它们不是“硬连线”的。
  • 好的,但是你有消息(可能的值:)。所以没有选项可供选择。
  • @A.L 因此我的问题是 - 我如何选择一个应该可用的选项,在页面源中可用,但在功能测试中不可用?答案可能在于“为什么可能的值是空的?”的背后。问题。
  • @A.L 你一开始是对的——我完全忘记了我使用的是 sqlite 测试数据库。填充数据库的唯一方法是构建夹具,感谢您播下怀疑的种子。将此作为解决方案发布,我很乐意接受。

标签: php symfony functional-testing


【解决方案1】:

InvalidArgumentException:输入“household[members][0][ethnicity]”不能将“6”作为值(可能的值:)。

错误消息应该显示可能值的列表,而不是(可能值:)。您必须检查在test 环境中,该字段填充了ethnicity 实体的记录。根据您的评论,您使用的是 SQLite 数据库,因此您必须检查您的数据夹具是否为 ethnicity 实体插入了一些数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多