ruby-on-rails - Rails Controller 私有(private)方法的功能测试

标签 ruby-on-rails ruby functional-testing private-methods

我的 Controller 中有一个私有(private)方法。用于某些数据库更新。我从另一个 Controller 方法调用此方法。它工作正常。

但是当我尝试为该方法编写测试用例时,它在我的函数中访问( session 变量和参数)时出错,所有其他方法都工作正常,问题仅在于私有(private)方法吗?

在我的功能测试设置方法中,我也在设置 session 。?

最佳答案

您应该避免测试私有(private)方法。拥有公共(public)/私有(private)/ protected 方法背后的“目标”是封装逻辑并使更改部分代码变得容易,而不必担心一个函数或类如何与另一个函数或类交互。

话虽如此,如果您仍然觉得有必要测试您的私有(private)方法,也有变通办法。我通过 Jay Field's blog 找到了这个效用函数:

class Class
  def publicize_methods
    saved_private_instance_methods = self.private_instance_methods
    self.class_eval { public *saved_private_instance_methods }
    yield
    self.class_eval { private *saved_private_instance_methods }
  end
end

查看链接以了解使用详情,这似乎是一种快速简单的方法来完成您想要做的事情。

关于ruby-on-rails - Rails Controller 私有(private)方法的功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2730099/

相关文章:

ruby - 通过 API v1.5 访问整个 netflix 目录

ruby - 在 Mac OS X Lion 上安装 Ruby 1.9.3 时出错

java - 在多个服务器上重放 HTTP 请求并比较结果

golang 生成功能测试的代码覆盖率

grails - Grails 1.3.3和Functional Test插件1.2.7问题

html - Bootstrap 中的响应式表单

ruby-on-rails - Ruby Rails Gem 检测其他语言

ruby-on-rails - Ruby on Rails,创建方法

jquery - "Uncaught TypeError: $(...).popover is not a function"RoR-Bootstrap-jQuery

ruby-on-rails - 如何使用 Ruby gem 添加产品变体