我的 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/