Rspec和capybara选择了价值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rspec和capybara选择了价值相关的知识,希望对你有一定的参考价值。

我想断言,如果某些选择具有特定值而不是文本。如果我通过文本断言,这是有效的:

it 'should be true' do
   should have_select("country", :selected => 'Brazil')
end

我的选择html是这样的:

<select name="user[country]" id="country">
  <option value="BR">Brazil</option>
 ...
</select>

我想断言页面是否有选择值的选择,我该怎么做?

答案

我不相信有一个内置匹配器用于按值检查选择列表。

但是,您可以使用value方法获取选择列表的值(即选定选项的值):

find(:css, 'select#country').value

您可以使用expect语法将其与期望值进行比较:

expect( find(:css, 'select#country').value ).to eq('BR')

或者使用should语法:

find(:css, 'select#country').value.should == 'BR'
另一答案

或者,如果您希望远离CSS选择器:

find_field("country").value.must_equal "BR"

这假设您为此字段country命名标签。

另一答案

在较新版本的RSpec和Capybara中,您可以使用have_select

expect(page).to have_select("Time of day", text: "8:30 AM")

以上是关于Rspec和capybara选择了价值的主要内容,如果未能解决你的问题,请参考以下文章

Rspec/Capybara 正在加载,循环要求被认为是有害的

rspec 和 capybara 带有关于使用 4.8.2 的 QT 警告,但安装了 qt5

清理测试数据库,仅使用RSPEC和Capybara运行测试生成的数据

资产预编译后,RSpec / Capybara测试不会通过

在 Rails 中使用 RSpec 和 Capybara 时未定义的方法“访问”

在 Rails 3.1 中使用 Capybara、Rspec 和 Selenium 进行测试时登录失败