"Daniel Lopes" <danielvlo...@gmail.com> writes: > I'm having troubles to test methods on controllers, specially this method: > > def update > @property = @user.properties.find(params[:id]) > > if params[:property][:owner_id].blank? > @owner = Owner.create_from_user(@user) > @property.owner = @owner > end > > if @property.update_attributes(params[:property]) > flash[:notice] = 'Imóvel atualizado com sucesso.' > redirect_to user_property_path(@user) > else > render :action => "edit" > end > end > > This method is pretty standard, except for the line ==> if > params[:property][:owner_id].blank? > > In my spec file I try this: > > it "should expose the requested property as @property" do > @property = mock_model(Property, :owner=>:owner, :owner= =>:owner, > :update_attributes => true) > Property.stub!(:find).and_return(@property) > Owner.stub!(:create_from_user) > > put :update, :id => "1" > assigns(:property).should equal(@property) > end > > But get this error: > The error occurred while evaluating nil.[] > > The problem is params and I don't know how is the best way to simulete params > hash ...
Hi, you need to pass the param in the put: put :update, :id => "11", :property => {:owner_id => "123"} and when you want to check for the blank one, you just have to pass in an empty property hash: put :update, :id => "11", :property => {} This way params[:property][:owner_id] will return nil. Pat _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users