【发布时间】:2015-09-07 21:53:12
【问题描述】:
我有一个装饰器,它接收应用程序控制器作为变量,以便访问会话变量。比如:
navigation = NavigationDecorator(user_id, self)
自己就是 ApplicationController。
一切正常,但现在我必须对其进行测试,并且在 Rspec 中我做了
navigation = NavigationDecorator(user_id, ApplicationController.new)
在我的测试中,我得到:
ActionController::Metal#session delegated to @_request.session, but @_request is nil: #<ApplicationController:0x000000161363f0 @_routes=nil, @_action_has_layout=true, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil>
更新:
我是这样使用的:
def initialize(user, controller)
@controller = controller
...
end
def retrieve_user_id
user_id = @controller.session[:temporary_id] if @controller.session[:temporary_id]
super
end
【问题讨论】:
-
能展示一下NavigationDecorator的代码吗?你如何在那里使用ApplicationController?
-
你好@SheinAlexey!我已经更新了我的问题
标签: ruby-on-rails ruby rspec controller