我使用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
答案 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