我有一个调用 current_user.eligible_for_reward 的辅助方法?我想在 Capybara 验收规范中 stub 该调用。在我的模型中,我有一个占位符虚拟方法:
User.rb
def eligible_for_reward?
"blah"
end
到目前为止,这是我尝试过的:
我尝试对 current_user 进行 stub ,但这会导致“修改卡住对象”错误,因为 Controller 为零。我相信只有在我使用 RSpec 的 get 而不是访问 some_path 时才会设置 Controller 。我需要坚持访问 some_path,我相信,否则我的 page.should ... 全部失败,因为页面未设置。
我尝试以用户身份登录(成功运行注册/登录的 login_as(user))然后 stub user.eligible_for_reward?,但这似乎不起作用,因为我仍在返回测试“blah”
有没有什么好的方法可以杜绝这种方法?
最佳答案
在验收规范中 stub 不是一个好主意。如果没有其他办法,那么你可以这样做:
User.any_instance.stub!(:eligible_for_reward?).and_return(true)
请记住,在验收规范中 stub /模拟意味着您实际上没有测试任何东西。
关于ruby-on-rails-3 - 如何在 Capybara 验收测试中 stub Controller /current_user 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043837/