pet*_*hka 123 rspec ruby-on-rails
我有控制器:
class AccountController < ApplicationController
def index
end
private
def current_account
@current_account ||= current_user.account
end
end
Run Code Online (Sandbox Code Playgroud)
如何current_account
使用rspec 测试私有方法?
PS我使用Rspec2和Ruby on Rails 3
mon*_*cle 191
使用#instance_eval
@controller = AccountController.new
@controller.instance_eval{ current_account } # invoke the private method
@controller.instance_eval{ @current_account }.should eql ... # check the value of the instance variable
Run Code Online (Sandbox Code Playgroud)
小智 37
我用send方法.例如:
event.send(:private_method).should == 2
Run Code Online (Sandbox Code Playgroud)
因为"发送"可以调用私有方法
Rya*_*igg 23
current_account方法在哪里使用?它有什么用途?
通常,您不测试私有方法,而是测试调用私有方法的方法.
您可以将私有或受保护的方法设为公共:
MyClass.send(:public, *MyClass.protected_instance_methods)
MyClass.send(:public, *MyClass.private_instance_methods)
Run Code Online (Sandbox Code Playgroud)
只需将此代码放在您的测试类中,替换您的类名。如果适用,请包括命名空间。
归档时间: |
|
查看次数: |
54356 次 |
最近记录: |