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
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to