Ich verwende derzeit RSpec, um meine Rails 4-Anwendung zu testen, und beim Testen fand ich dieses seltsame Problem: subject.current_user ist Null in der zweiten Methode in einem Kontext. Codeausschnitt:RSpec mit Devise: subject.current_user ist Null, wenn in der zweiten Methode in einem Kontext verwendet
describe 'GET #register_as_team:' do
context 'user logged in but not admin:' do
login_user
it 'should redirect_to user_path if user is not student' do
get :register_as_team, id: subject.current_user.id
expect(response).to redirect_to(user_path(subject.current_user))
expect(flash[:danger]).not_to be_nil
end
it 'should redirect_to student_path if user is a non-pending student' do
student = FactoryGirl.create(:student, user: subject.current_user, is_pending: false)
get :register_as_team, id: subject.current_user.id
expect(response).to redirect_to(student_path(student))
end
end
end
Also, wenn subject.current_user
erstes Mal verwendet wird, ist es in Ordnung, und ich kann nur den angemeldeten Benutzer erhalte aber in der zweiten Methode gibt es gleich Null.
Hintergrundinformationen login_user
ist wie folgt:
module ControllerMacros
def login_user(user = nil)
before(:each) do
# @request.env["devise.mapping"] = Devise.mappings[:user]
user ||= User.find_by(email: '[email protected]')
user ||= FactoryGirl.create(:user, email: '[email protected]', uid: 'default_user.controller.spec')
sign_in user
end
end
end