使用 RSpec 和 Capybara 的 Rails 测试在 application.html.erb 中找不到链接



我正在使用RSpec和Capybara为我的Rails应用程序编写功能测试,我的测试失败并显示错误消息:

Failure/Error: click_link "Google"
Capybara::ElementNotFound:
Unable to find visible link "Google"

我的规范写成:

it "lists logged in user's profile data" do
visit '/'
mock_auth_hash
click_link "Google"
click_link "User"
expect(page).to have_content('mockuser')
end 

我的谷歌登录link_to在我的应用程序.html.erb布局中:

<a class="nav-item nav-link"><%= link_to 'Google', '/auth/google' %></a>

当我使用相同的link_to并将其放入根页面时,测试顺利通过。看起来Capybara很可能没有在我的应用程序.html.erb布局中拾取HTML。不过,我不确定如何解决此问题,并且Capybara的文档没有指出任何解决方案。

感谢提供的任何帮助。

Capybara不太可能只是忽略页面的某些部分,更有可能的是,您的应用程序在呈现页面时实际上并没有正确呈现该布局(可能是因为您出于某种原因在链接内呈现链接 - 这是非法的html https://www.w3.org/TR/html52/textlevel-semantics.html#the-a-element??visit后睡眠几秒钟,然后如果您使用的驱动程序支持屏幕截图 - 如果不是使用save_and_open_page,请拍摄一个并检查 HTML 以查看页面上的实际内容。

visit('/')
sleep 3
save_and_open_screenshot # If the driver supports screenshots
# save_and_open_page # To look at the actual HTML

很有可能你会发现这个页面真的没有那个链接。

相关内容

最新更新