[rspec-users] what RSpec approach could I use for this.

Justin Ko
Sat, 03 Mar 2012 22:29:26 -0000

On Mar 3, 2012, at 2:55 PM, Greg C. wrote:

> Background:  So I have roughly:
>
> class A
>   def calculate_input_datetimes
>      # do stuff to calculate datetimes - then for each one identified
>      process_datetimes(my_datetime_start, my_datetime_end)
>   end
>
>   def process_datetimes(input_datetime_start, input_datetime_end)
>      # do stuff
>   end
> end
>
> So:
> * I want to test that calculate_input_datetimes algorithms are working
> and calculating the correct datetimes to pass to process_datetimes
> * I know I can STUB out process_datetimes so that it''s code
won''t be
> involved in the test
>
> QUESTION:  How can I setup the rspec test however so I can specifically
> test that the correct datestimes were attempted to be passed over to
> process_datetimes,  So for a given spec test that process_datetimes was
> called three (3) times say with the following parameters passed:
>
> * 2012-03-03T00:00:00+00:00, 2012-03-09T23:59:59+00:00
> * 2012-03-10T00:00:00+00:00, 2012-03-16T23:59:59+00:00
> * 2012-03-17T00:00:00+00:00, 2012-03-23T23:59:59+00:00
>
>
> thanks
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

Setup 3 individual expectations:

a_instance.should_receive(:process_datetimes).with(input_datetime_start_1,
datetime_end_1).once.ordered
a_instance.should_receive(:process_datetimes).with(input_datetime_start_2,
datetime_end_2).once.ordered

Your 2 methods should be tested in isolation (unless #process_datetimes is
private). So for #calculate_input_datetimes, just ensure that #process_datetimes
is called with the correct arguments. The, test #processs_datetimes in
isolation.