ruby-on-rails-3 - 如何在 Capybara 验收测试中 stub Controller /current_user 方法

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

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

User.rb

def eligible_for_reward?
  "blah"
end

到目前为止,这是我尝试过的:

  1. 我尝试对 current_user 进行 stub ,但这会导致“修改卡住对象”错误,因为 Controller 为零。我相信只有在我使用 RSpec 的 get 而不是访问 some_path 时才会设置 Controller 。我需要坚持访问 some_path,我相信,否则我的 page.should ... 全部失败,因为页面未设置。

  2. 我尝试以用户身份登录(成功运行注册/登录的 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/

相关文章:

javascript - JSDom 11.12.0 - 如何模拟 localStorage?

python - pytest 无法发现 VSCode 中的测试

Android,没有模拟器的基本代码测试

ruby-on-rails-3 - Rails ERB——将生成的 HTML 内容获取到我可以在 Controller 中访问的变量

ruby-on-rails - Rspec should match is false 但 eq 应该为真吗?

ruby-on-rails - Rails 3 - 在 Controller 中处理嵌套资源查询的最佳方式?

ruby-on-rails - 如何设置 RSpec 进行性能测试 'on the side'

ruby-on-rails - 如何在 Rails 3 下的 rspec 测试中访问 Controller 常量

ruby-on-rails - 设计和 Rspec - 未定义的方法 `authenticate!' 为 nil :NilClass

ruby-on-rails - Rails 如何推断嵌套资源的父级?