On Wed, Dec 5, 2012 at 3:23 PM, netzfisch <[email protected]> wrote:
> I have model (event.rb) method, that retrieves a list of all recurrence
> dates for the named period
>
>       def self.dates_between(start_date, end_date)
>          dates = (start_date..end_date).step(7).to_a
>       end
>
> than I specify the following in event_spec.rb
>
>       before(:each) do
>         @event = FactoryGirl.create(:event)
>       end
>       subject { @event }

Side note: recommend using this instead:

  subject(:event) { FactoryGirl.create(:event) }

>
>       ... other working tests ...
>
>       describe '#dates_between' do
>         context 'finds recurrences dates of a event' do
>           start_date = "2012-12-01 18:25:25"
>           end_date = "2012-12-15 18:25:25"
>           output_dates = ["2012-12-01 18:25:25", "2012-12-08 18:25:25",
> "2012-12-15 18:25:25"]
>
>           it 'should call Event with method dates_between' do
>             @event.should_receive(:dates_between).with(start_date, end_date)
>             @event.dates_between(start_date, end_date)
>           end

This ^^ will pass regardless of whether the method is defined in the
right place because the should_receive statement defines the
dates_between method if it's not there. In other words, this example
is not actually testing anything besides how rspec-mocks works.

>
>           it 'should find and return the RIGHT recurrences dates' do
>             @event.dates_between(start_date, end_date).should
> eq(output_dates)

This is probably the one that's failing because you're defining a
class method but you're calling an instance method.

>           end
>         end
>       end
>
> and get this failure:
>
>     1) Event#dates_between finds recurrences dates of a event should find
> and return the RIGHT recurrences dates
>      Failure/Error: @event.dates_between(start_date, end_date).should
> eq(output_dates)
>      NoMethodError:
>        undefined method `dates_between' for #<Event:0xb99e9f8>
>      # ./spec/models/event_spec.rb:52:in `block (4 levels) in <top
> (required)>'
>
> when I change in the model from a class method to an instance method
> (removing "self.") the console just prints out "wild data":
>
>> 22:93:55", "2012-12-01 22:93:62", "2012-12-01 22:93:69", "2012-12-01
>> 22:93:76", "2012-12-01 22:93:83", "2012-12-01 22:93:90", "2012-12-01
>> 22:93:97", "2012-12-01 22:94:04", "2012-12-01 22:94:11", "2012-12-01
>> 22:94:18", "2012-12-01 22:94:25", "2012-12-01 22:94:32", ...

What is wild about that data? Looks like what you're defining in the
example. What data are you expecting here?

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to