如何在Capybara验收测试中存根控制器/ current_user方法

时间:2011-08-12 17:15:07

标签: ruby-on-rails-3 testing rspec capybara

我有一个调用current_user.eligible_for_reward的辅助方法?我希望在Capybara验收规范中存根。在我的模型中,我有一个占位符虚拟方法:

User.rb

def eligible_for_reward?
  "blah"
end

这是我到目前为止所尝试的内容:

  1. 我尝试了对current_user进行存根,但这会导致“修改冻结对象”错误,因为控制器为零。我相信只有在我使用RSpec的get而不是访问some_path时才会设置控制器。我需要坚持访问some_path,我相信,否则我的page.should ...都会失败,因为页面没有设置。

  2. 我尝试以用户身份登录(login_as(用户)成功运行注册/登录)然后将user.eligible_for_reward?存根,但这似乎不起作用,因为我还在回来测试“blah”

  3. 有没有一种方法可以找到这种方法?

1 个答案:

答案 0 :(得分:7)

验收规格存在不是一个好主意。如果没有其他办法,那么你可以这样做:

User.any_instance.stub!(:eligible_for_reward?).and_return(true)

请记住,接受规范中的存根/嘲弄意味着你真的不测试任何东西。