我有一个使用collection_check_boxes
创建的复选框列表。
在功能/集成测试中测试时,使用Capybara,并希望"规范化"通过取消选中所有页面,然后检查我想要检查的页面:
within_fieldset('Product') do
# Reset all checkboxes for a level playingfield.
# What to do?
# Mark checkboxes for products enabled
products.each do |product|
check products
end
end
这是一个所谓的PageObject,因此我想要一些通用:如果在实际测试中,我会知道哪些字段被检查并取消选中它们。但是这个更通用的助手没有这样的知识。
我已经尝试了find('input[type=checkbox]').all {|checkbox| uncheck(checkbox) }
的某些内容,它应该有效,但对于手头的任务似乎相当复杂,不是吗?
在Capybara,我错过了一些uncheck_all()?
吗?这是"重置"的常见模式。在开始填写表格之前,在水豚的形式到空白状态?
答案 0 :(得分:7)
试试这个:
all('input[type=checkbox]').each do |checkbox|
if checkbox.checked? then
checkbox.click
end
end
答案 1 :(得分:3)
这几乎与您的解决方案完全相同,但可能稍微清晰一些,我认为也适用于自定义JS复选框。据我所知,没有像uncheck_all
方法那样的东西。
all("input[type='checkbox']").each{|box| box.set('false')}