Rails教程 - Ch。 8 - 使用'before'行的RSpec测试中的ArgumentError

时间:2012-02-24 23:56:52

标签: rspec railstutorial.org

我正在关注Michael Hartl撰写的Rails教程,我在第8.2.6节“注销”中遇到意外错误/失败测试 - http://ruby.railstutorial.org/chapters/sign-in-sign-out?version=3.2#sec:signing_out

我用于RSpec测试失败的代码可以在清单8.28中找到。以下代码:

before { click_link "Sign out", method: :delete }

发出以下错误:

ArgumentError: wrong number of arguments (2 for 1)
# (eval):2:in 'click_link'
# ./spec/requests/authentication_pages_spec.rb:35:in 'block (5 levels) in <top (required)>

我确认我的代码与Hartl教程中的示例完全相同,但我仍然遇到了失败的测试。想法?

1 个答案:

答案 0 :(得分:0)

capybara方法click_link only takes a single parameter,这是您要激活的链接的名称。所以我认为代码应该只是:

before { click_link "Sign Out" }

您拥有的其余代码看起来像是thew视图中sign_out操作的结尾:

<%= link_to "Sign out", signout_path, method: => :delete %>

通过使用Capybara单击链接,它应该已经在视图中使用上面的代码,所以最后一个垃圾似乎是重复。

我只想删除“方法::删除”,看看你得到了什么。