需要检查该文本是否只出现在页面上一次

时间:2014-06-24 17:45:42

标签: ruby-on-rails ruby-on-rails-4 rspec capybara capybara-webkit

我使用RSpec / Capybara进行Rails应用测试,我需要检查视图中的一个元素是否只出现过一次。

例如,在以下代码中,我需要确保task.title只在页面中出现一次。如图所示,我可以检查它是否存在,但我找不到如何检查它是否只出现一次。

task = FactoryGirl.create(:task)
login_as(task.user, :scope => :user)
visit tasks_index_url
expect(page).to have_content task.title

1 个答案:

答案 0 :(得分:1)

Capybara的page.has_content?(别名为page.has_text?)可选择显示文本的次数。所以你可以改变你的期望

expect(page).to have_content(task.title, count: 1)

has_text? / has_content?还有其他一些选项,这些选项未显示在the rdoc中,但记录在the source中(从当前版本的第234行开始:) :

# @option options [Integer] :count (nil) Number of times the text should occur
# @option options [Integer] :minimum (nil) Minimum number of times the text should occur
# @option options [Integer] :maximum (nil) Maximum number of times the text should occur
# @option options [Range] :between (nil) Range of times that should contain number of times text occurs