On Thu, May 19, 2011 at 1:18 PM, S Ahmed <sahmed1...@gmail.com> wrote:
> My user controllers 'create' action looks like: > > > def create > @user = User.new(params[:user]) > > @user.user_name = params[:user][:user_name] > @user.email = params[:user][:email] > > if @user.is_valid? > @user.status = 2 > @user.save! > > UserMailer.new_user(@user).deliver > > redirect_to(@user, :notice => "user was created successfully") > else > render :action => 'new' > > end > > > end > > > > My test is: > > > describe "POST 'create' do > it "should be successful" do > > user = mock_model(user) > user.sub(:new).and_return(user) > > post 'create' > response.should redirect_to(user) > > end > > end > > > error: > > Failure/Error: post 'create' > NoMethodError: > 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.[] > # ./app/controllers/users_controller.rb:44:in `create' > # ./spec/controllers/users_controller_spec.rb:81 > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > Hello. nil.[] means the code is trying to call an array getter method (the_array[the_index]) on nil. In the action, "params[:user][:user_name]" is causing the error because there is no ":user" key in "params". Here is how you want to invoke the request: post :create, :user => {:user_name => 'foo', :email => 't...@example.com'} Hope that fixes it.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users