Sorry David, I am getting this error: ailure/Error: @record.save_cf_data(result) NoMethodError: You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.first
Here is my Gist of my code that I can't figure out how to test. - https://gist.github.com/1362863 So I am expecting it to send in my result, but instead the test has nil. -Thanks, Tony Spore On Sun, Nov 13, 2011 at 8:12 AM, David Chelimsky <dchelim...@gmail.com>wrote: > On Nov 12, 2011, at 6:27 PM, Tony Spore wrote: > > > > > > > -Thanks, > Tony Spore > > > On Sat, Nov 12, 2011 at 2:14 PM, David Chelimsky <dchelim...@gmail.com>wrote: > >> On Nov 12, 2011, at 3:33 PM, Tony Spore wrote: >> >> I am attempting to test a custom method, and totally bombing out. >> describe Record do >> describe '#save_cf_data' do >> before :each do >> @record = mock_model(Record) >> >> >> mock_model creates a test double, or pure mock ... >> >> end >> it "should have a birthday" do >> @record.save_cf_data({"final_outputs"=>["birth_day"=>["3"]]}) >> >> @record.birth_day.should eql 3 >> >> >> ... which means that @record here ^^ is a test double, not a Record >> object ... >> >> end >> end >> >> My Model looks like this: >> class Record < ActiveRecord::Base >> def save_cf_data(params) >> result = params[:final_outputs].first >> .... >> self.birth_day = result['birth_day'].first >> end >> end >> >> >> ... which means that this class definition ^^ has nothing to do with >> anything in the example above. >> >> I have this output - As if I'm not hitting the method correctly - >> >> Mock "Record_1002" received unexpected message :save_cf_data with >> ({"final_outputs"=>[{"birth_day"=>["3"]}]}) >> >> >> What you want is either stub_model, or just Record.new or, if you're >> using something like factory_girl, Factory.build(Record). >> >> See https://www.relishapp.com/rspec/rspec-rails/docs/mocks/mock-modeland >> https://www.relishapp.com/rspec/rspec-rails/docs/mocks/stub-model for >> more info. >> >> HTH, >> David >> > > Great thanks! > > So now I am at least calling the method - But when I try to add in the > params that I'm being sent I keep returning nil - > Failure/Error: @record.save_cf_data(result) > NoMethodError: > You have a nil object when you didn't expect it! > You might have expected an instance of Array. > The error occurred while evaluating nil.delete > > In the above case I create the hash as result > = {"final_outputs"=>["surname"=>["hagan"]]} > > When I manually place in the params - > Failure/Error: > @record.save_cf_data({"final_outputs"=>["surname"=>["hagan"]]}) > NoMethodError: > You have a nil object when you didn't expect it! > You might have expected an instance of Array. > The error occurred while evaluating nil.first > > So now as I go down this path, I would say that I am not feeding into the > method my params. How would it be best to do that? > > I am right now just trying to use rspec with no additional params. > > Thanks again! > > > I'd love to help, but ... > > 1. please post either inline or at the bottom (I moved your post to the > bottom in this case - see http://idallen.com/topposting.html). > 2. please post actual code or a link to a gist instead of descriptions of > the code or changes you made. And example is worth 10000 words, and it > makes it easier for people who are trying to help to understand exactly > what you're dealing with. > > Cheers, > David > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users