我对铁杆很新,还在学习它。现在我得到了这样的测试失败消息:
1) LayoutLinks should have the right links on the layout
Failure/Error: click_link("Help")
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching link "Help"
# ./spec/requests/layout_links_spec.rb:47:in `block (2 levels) in <top (required)>'
因为我有两个相同的&#34;帮助&#34;我的主页上的链接,但似乎测试认为它是一个模糊的匹配,我希望它以相同的方式测试它们,因为链接指向同一页面。
实际上网站上有几种解决方案,但大多数解决方案对我来说都很复杂,因为我很新,所以有人能给我最简单的解决方案吗?提前谢谢。
更新:
在我的观点和规范中,没有什么复杂的。我还在学习所有东西。
这是我的规格
visit root_path
expect(page).to have_title("Home")
click_link("About")
expect(page).to have_title("About")
click_link("Contact")
expect(page).to have_title("Contact")
click_link("Help")
expect(page).to have_title("Help")
这是我的标题部分在布局
<header>
<nav class="round">
<ul>
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Help", help_path %></li>
<li><%= link_to "Sign in", "#" %></li>
</ul>
</nav>
</header>
这是我的页脚在布局中的部分内容
<footer>
<nav class="round">
<ul>
<li><%= link_to "About", about_path %></li>
<li><%= link_to "Contact", contact_path %></li>
<li><%= link_to "Help", help_path %></li>
</ul>
</nav>
</footer>
请注意,两个部分中有两个sepearte帮助链接,它们是相同的。
答案 0 :(得分:6)
您可能想尝试其中一个
click_link(“帮助”,:匹配=&gt;:首先)
click_link(“帮助”,:匹配=&gt;:智能)
click_link(“帮助”,:match =&gt;:prefer_exact)
click_link(“帮助”,:匹配=&gt;:一个)
希望这有帮助。
答案 1 :(得分:5)
通过命名周围的元素,通过明确指示单击哪个帮助按钮,可以使规范更具体。这仅在它们位于不同元素
内时才有效基于您发布的html ...我会根据您要测试的链接替换click_link(“帮助”)。(在页眉或页脚中)
within("header") do
click_link "Help"
end
或
within("footer") do
click_link "Help"
end
或查看此解决方案 - &gt; Capybara Ambiguity Resolution