Тестирование приложения командной строки с помощью cucumber / aruba / timecop: Как внедрить контекст

Следующий сценарий в значительной степени резюмирует мою проблему:

Scenario: problems with subprocesses
  Given the date is 01/01/2012 10:31
  When I run `ruby -e "puts Time.now"`
  Then the output should contain "10:31"

Это сводится к Когда я запускаю ruby ​​-e " помещает Time.now ", запускающий дочерний процесс, что делает все мои Timecop.freeze заглушками неэффективными, поскольку они работают только с основным процессом. Мне нужно каким-то образом «вставить» текущий контекст в выполняемую команду, но, похоже, я ничего не могу придумать. Я пытаюсь сделать что-то невозможное?


Шаг:

require 'timecop'
Given /^the date is (\d+)\/(\d+)\/(\d+) (\d+):(\d+)$/ do |month, day, year, hour, minute|
  Timecop.freeze(Time.local(year.to_i, month.to_i, day.to_i, hour.to_i , minute.to_i, 0))
end
6
задан sebastiangeiger 29 February 2012 в 17:13
поделиться