检查是否选中了特定的单选按钮

时间:2014-04-25 15:48:42

标签: ruby-on-rails rspec capybara shoulda

我正在使用单选按钮对表单执行某些测试。我有一个具有以下标识符的单选按钮:

<input checked=​"checked" class=​"radio_buttons optional" id=​"rating_commute_8" name=​"rating[commute]​" type=​"radio" value=​"8">​

我试图让它通过以下测试,但它给了我错误Failure/Error: within(:css, '#rating_commute_8').should be_checked LocalJumpError: no block given (yield)

  within(:css, '#rating_commute_8').should be_checked

2 个答案:

答案 0 :(得分:1)

较新版本的rspec / capybara没有它应该是这样的:

within('form') do
  expect(page).to have_checked_field('rating_commute_8')
end

答案 1 :(得分:0)

within方法用于确定查找元素的范围。例如,您可能只想查找某个div中的单选按钮:

within(:css, '#some_parent_div') do
  find(:css, '#rating_commute_8').should be_checked
end

在这种情况下,假设单选按钮的id是唯一的,则无需定义特定的搜索范围。您只需找到该元素,然后检查它是否已被选中。要找到该元素,您需要使用find而不是within。以下应该有效:

find(:css, '#rating_commute_8').should be_checked