为什么Rspec / Capybara给我一个预期的css ...返回错误?

时间:2012-06-26 03:13:57

标签: ruby-on-rails rspec capybara

我正在使用的测试是:

it { should have_link('Logout', href: logout_url) }

我只测试是否存在<a>标记,其中Logout为文本,而href为logout_url路径。我应该使用其他语法吗?

宝石:

rails 3.2.6
rspec-rails 2.10.1
capybara 1.1.2

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。我建议(如果您还没有)熟悉整体capybara dsl以及某些特定部分,例如capybara matchers

我相信你的考试写得很好:

it { should have_link('Logout', href: logout_url) }

只要链接文本确实是“Logout”并且正确指定了href(见下文)。

根据capybara docshave_link的第一个参数是locator。在你的情况下,它是'退出'。这可以是链接本身的文本,也可以是dom元素的#id。因此,在您的情况下,您需要在包含logout_url链接的链接中包含“注销”文本。

请注意,水豚中的定位符区分大小写,因此请确保您匹配大小写。

您可能还想考虑是否应该使用logout_url而不是logout_path。默认情况下,rails并不总是为大多数链接生成完整的URL。它只是生成路径。这是区别:

users_url: http://localhost/users
users_path: /users

检查您的网页,了解您的应用生成了哪些类型的网址。

答案 1 :(得分:0)

可能应该是logout_path。

此外,您可以尝试使用save_and_open_page来了解出现了什么问题。