当前,我正在用rspec编写一些控制器测试。控制器要求用户登录后才能使用。
如果@ current_user.nil? 做点什么 其他 重定向
我目前在如何对局部变量current_user进行存根方面遇到问题。
答案 0 :(得分:0)
为什么不使用rspec登录到测试系统而不是对current_user进行存根。您可以执行以下操作:
describe "Req #5 - login" do
it 'loads the login page' do
get '/login'
expect(last_response.status).to eq(200)
end
it 'loads the user index after login' do
user = User.create(:username => "Raptor", :password => "Raptor")
params = {
:username => "Raptor",
:password => "Raptor"
}
post '/login', params
follow_redirect!
expect(last_response.body).to include("Home Page for: Raptor")
end
end
答案 1 :(得分:0)
您可以像下面这样对控制器的current_user方法进行存根:
let(:current_user) { User.create(...) }
before do
allow(@controller).to receive(:current_user).and_return(current_user)
end