我正在重构一些规格,在控制器规格中我有before(:each)
设置会话所需的东西,想避免重复并为每个控制器规范设置全局初始设置
我之前的过滤器是......
config.before(:each, :type => :controller) do
#...
session[:current_user] = @user
session[:instance] = @instance
#...
end
@user
和@instance
也在before(:each)
中设置
我刚刚隐藏它们以便于阅读
运行控制器测试时出现以下错误
undefined method `session' for nil:NilClass
我希望回调前的全局回调与各个测试中的回调相同,但我想它们可能是在rails环境初始化之前加载的?
由于
答案 0 :(得分:1)
使用controller.stub!(:session, { :current_user => @user, :instance => @instance })
答案 1 :(得分:0)
我认为这更多地与Ruby和块(它们是闭包)有关。
传递给before
的块绑定到创建它的上下文,session
在该上下文中不可用。