Minitest + Capybara:如何检查选项列表是否不包含选项?
Minitest + Capybara: how to check if options list does not contain an option?
在我的应用程序中,我有一个包含一些选项的 select 标签:
<select class="form-control" id="select-course-js">
<option>course-1</option>
<option>course-2</option>
<option>course-3</option>
</select>
我想实施一个系统测试来检查是否没有课程 4 选项。可以用水豚做吗?如果是这样 - 怎么样?
堆栈:rails5 + Minitest + Capybara
更新。
解决方案(由 Thomas Walpole 提供)
assert_no_select('select-course-js', with_options: ['course-4'])
一种方法是将 id 添加到每个 option
并检查它是否存在...
<select class="form-control" id="select-course-js">
<option id="crs-1">course-1</option>
<option id="crs-2">course-2</option>
<option id="crs-3">course-3</option>
</select>
然后检查crs-4
是否存在。您使用的方法将取决于您的特定逻辑,但这里有几个示例...
assert_no_css('#select-course-js #crs-4')
page.has_css?('#select-course-js #crs-4')
您可以找到其他方法来使用 here
您可以通过
验证带有course-4
作为选项的页面上没有select'select-course-js'
assert_no_select('select-course-js', with_options: ['course-4'])
然而,这不会同时验证 select-course-js
select 是否在页面上,因此您可能想同时执行这两项操作
assert_select('select-course-js')
assert_no_select('select-course-js', with_options: ['course-4'])
另一种选择是使用可选的过滤器块
assert_select('select-course-js') do |el|
el.has_no_selector?(:option, 'course-4')
end
但如果测试失败,错误将不会那么明显。
在我的应用程序中,我有一个包含一些选项的 select 标签:
<select class="form-control" id="select-course-js">
<option>course-1</option>
<option>course-2</option>
<option>course-3</option>
</select>
我想实施一个系统测试来检查是否没有课程 4 选项。可以用水豚做吗?如果是这样 - 怎么样? 堆栈:rails5 + Minitest + Capybara
更新。 解决方案(由 Thomas Walpole 提供)
assert_no_select('select-course-js', with_options: ['course-4'])
一种方法是将 id 添加到每个 option
并检查它是否存在...
<select class="form-control" id="select-course-js">
<option id="crs-1">course-1</option>
<option id="crs-2">course-2</option>
<option id="crs-3">course-3</option>
</select>
然后检查crs-4
是否存在。您使用的方法将取决于您的特定逻辑,但这里有几个示例...
assert_no_css('#select-course-js #crs-4')
page.has_css?('#select-course-js #crs-4')
您可以找到其他方法来使用 here
您可以通过
验证带有course-4
作为选项的页面上没有select'select-course-js'
assert_no_select('select-course-js', with_options: ['course-4'])
然而,这不会同时验证 select-course-js
select 是否在页面上,因此您可能想同时执行这两项操作
assert_select('select-course-js')
assert_no_select('select-course-js', with_options: ['course-4'])
另一种选择是使用可选的过滤器块
assert_select('select-course-js') do |el|
el.has_no_selector?(:option, 'course-4')
end
但如果测试失败,错误将不会那么明显。