Следующий сценарий довольно много суммирует мою проблему:Тестирование приложений командной строки с огурца/Арубе/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"
Она сводится к When I run ruby -e "puts 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