Doug
2010-Jul-03 06:20 UTC
[rspec-users] rspec controller test strange error: undefined method `call'' for nil:NilClass
must be doing something dumb.... not sure, but the ''call'' appears to be on the block.call when the respond_to block gets executed. straight forward "channels" resource with a ''create'' action.... only new thing is just assigning the current_user to the model. def create @channel = Channel.new(params[:channel]) @channel.user = @user respond_to do |format| if @channel.save flash[:notice] = ''Channel was successfully created.'' redirect_to(@channel) else flash[:error] = ''Error saving Channel.'' render :action => "new" end end end -------- modifying the scaffold spec like this produces strange def mock_channel(stubs={}) @mock_channel ||= mock_model(Channel, stubs) end def mock_user(stubs={}) @mock_user ||= mock_model(User, stubs) end before(:each) do @mock_user = mock_user controller.stub(:current_user).and_return @mock_user end describe "POST create" do describe "with valid params" do it "assigns a newly created channel as @channel" do mock_channel(:save => true) @mock_channel.should_receive(:user=).with(@mock_user) Channel.stub(:new).with({''these'' => ''params''}).and_return(mock_channel) debugger post :create, :channel => {:these => ''params''} assigns[:channel].should equal(mock_channel) end ------ it fails on the post :create line ....reporting undefined method `call'' for nil:NilClass at .../.rvm/gems/ruby-1.8.7-p249/gems/activesupport-2.3.5/lib/ active_support/whiny_nil.rb:52 raise_nil_warning_for klass, method, caller 51 else 52 super 53 end 54 end another clue perhaps is that if you remove the :save => true stub option, then it works ...but fails at the if @channel.save line .....reporting Mock "Channel_1002" received unexpected message :save with (no args) thanks in advance
Apparently Analagous Threads
- undefined method `protocol' for nil:NilClass
- undefined method `assigns' and undefined method `post'
- Authlogic + Rails3 - undefined method `Login' for nil:NilClass
- request.format = :mobile causes error "undefined method `ref' for nil:NilClass"
- using OpenPGP gem and getting "out of range error"