使用assert_select查找选择框值?

时间:2016-07-12 20:32:58

标签: ruby-on-rails ruby rspec

我正在努力测试我的选择框的值是否为6。

<form class="edit_line_item" id="edit_line_item_7" action="/line_items/7" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="_method" value="patch">
    <select name="line_item[quantity]" id="line_item_quantity"><option selected="selected" value="1">1</option>
    </select>
</form>

我的rspec代码

assert_select "select#line_item_quantity", value: 6

无论我改变什么,我的测试值仍然通过,所以我错了。

1 个答案:

答案 0 :(得分:1)

要以这种方式使用assert_select,你必须传递一个块并对传递给块的元素数组执行断言。

assert_select是“一个选择元素并进行一个或多个相等测试的断言”

示例:

 assert_select "ol" do |elements|
   elements.each do |element|
     assert_select element, "li", 4
   end
 end

您需要调整此示例以根据所选元素中的选项标记的value属性进行断言(在这种情况下为select标记)。

我建议您阅读文档:http://apidock.com/rails/v2.3.8/ActionController/Assertions/SelectorAssertions/assert_select

如果你使用的是水豚,你可以使用have_select。在这里回答:https://stackoverflow.com/a/18622979/156746