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-model and 
> 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

Reply via email to