我的产品控制器上有一个前置过滤器:
before_filter :authorize, only: [:create, :edit, :update]
我的authorize
方法在我的定义application_controller
为:
def authorize
redirect_to login_url, alert: "Not authorized" if current_user.nil?
end
current_user 定义为:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
在我的 rspec 中,我正在尝试:
before(:each) do
session.stub!(:user_id).and_return("admin@email.com")
end
但我仍然收到如下错误:
ProductsController PUT update with valid params redirects to the product
Failure/Error: response.should redirect_to(product)
Expected response to be a redirect to <http://test.host/products/1> but was a redirect to <http://test.host/login>
. . . 这意味着我的测试在请求时没有登录。
我在这里想念什么?
有没有更好的方法来处理这种情况?