2012-03-03 1 views
0

фона: Так что у меня есть примерно (Ruby на Rails приложения), что RSpec подход, который я мог бы использовать для этого требования

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 

Итак:

  • Я хочу, чтобы проверить, что calculate_input_datetimes алгоритмы работают и вычисляя правильные времена datetime, чтобы перейти к process_datetimes
  • Я знаю, что я могу STUB из process_datetimes, так что это код не будет , участвующий в тесте

ВОПРОС: Как я могу настроить RSpec тест, однако, так что я могу специально тест, что правильные datestimes были попытки быть переданы в process_datetimes, поэтому для данного теста спецификации, что process_datetimes был назвал три (3) раза сказать, со следующими параметрами, передаваемыми:

  • 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

благодаря

ответ

1

Похоже, вы хотите should_receive и указав, что аргументы ожидается, используя with, например

a.should_receive(:process_datetimes).with(date1,date2) 
a.should_receive(:process_datetimes).with(date3,date4) 
a.calculate_input_datetimes 

есть еще примеры в docs, например, вы можете использовать .ordered если порядок этих вызовов важно