[rspec-users] Testing Custom Methods

David Chelimsky dchelimsky at gmail.com
Sat Nov 12 17:14:48 EST 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20111112/f1c23cf3/attachment-0001.html>


More information about the rspec-users mailing list