I've been trying to test a very simple action on a controller with this setup:
rspec 1.3.0 ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] Rails 2.3.8 devise 1.0.8 And this is the test: before :each do @member = Factory.create(:member) sign_in @member @person = Person.new end it "should render form for a new person on GET people#new" do current_member.should_receive(:build_person).and_return(@person) get :new assigns[:person].should == @person response.should be_success response.should render_template("new") end This test creates a user, which is stored in the database with a correct password. Running this test results in this error: 1) NoMethodError in 'PeopleController Methods should render form for a new person on GET people#new' You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.[]= /Library/Ruby/Gems/1.8/gems/warden-0.10.4/lib/warden/ session_serializer.rb:25:in `store' /Library/Ruby/Gems/1.8/gems/devise-1.0.8/lib/devise/test_helpers.rb: 73:in `sign_in' /Users/damselem/Documents/project/spec/controllers/ people_controller_spec.rb:15: Finished in 0.625754 seconds 23 examples, 1 failure I wen to /Library/Ruby/Gems/1.8/gems/warden-0.10.4/lib/warden/ session_serializer.rb and I changed the file in order to print out some values: def store(user, scope) return unless user p scope p key_for(scope) p user p serialize(user) p session session[key_for(scope)] = serialize(user) end When running the test again I get: :member "warden.user.member.key" Member id: 1, email: "memb...@hv_club.com", encrypted_password: "c79e5e4790643b284002bf6ad8045f53ff900afc", password_salt: "Rim9LiyKARU1SHQCWIb0", confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2010-07-09 16:45:44", updated_at: "2010-07-09 16:45:44" [Member(id: integer, email: string, encrypted_password: string, password_salt: string, confirmation_token: string, confirmed_at: datetime, confirmation_sent_at: datetime, reset_password_token: string, remember_token: string, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime), 1] nil So it seems session is not initialized. Any ideas on how to fix this? BTW, I already contacted Jose Valim through GitHub and he recommended me to post my question in this group. http://github.com/plataformatec/devise/issues/issue/374 Thanks. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users