【发布时间】:2014-06-20 07:53:17
【问题描述】:
我环顾四周,但也许我没有找对地方。我正在尝试找出如何测试用户无法访问其控制器具有的页面:
before_filter :authenticate_user!
理想情况下,我想同时捕获设计消息:
"you need to sign in or sign up before continuing"
到目前为止我有这个
require 'spec_helper'
describe CampaignsController do
it "should not allow a user be able to access without being authenticated" do
get :index
response.should redirect_to(new_user_session_path)
end
结束
目前我得到错误
Failure/Error: response.should redirect_to(new_user_session_path)
Expected response to be a <redirect>, but was <200>
活动控制器
class CampaignsController < ApplicationController
before_filter :authenticate_user!
def index
@campaigns = Campaign.all
end
end
在我的规范助手中,我调用以下内容
# Include Devise Test Helpers
config.include Devise::TestHelpers, :type => :controller
config.extend ControllerMacros, :type => :controller
controller_macros.rb
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.create(:user)
sign_in user
end
end
end
我在这个阶段没有调用 login_user 方法,那么 spec_helper 会调用这个吗?
我该如何正确处理这个问题?
【问题讨论】:
-
请发帖
CampaignsController。 -
对我来说似乎没问题,你能确保你没有在某处调用
sign_in方法(在你的 spec_helper 中?)。我们能不能也有 ApplicationController 的代码? -
已更新,现在在您的 cmet 之后考虑您可能会有所收获
标签: ruby-on-rails ruby rspec devise