il seguente scenario praticamente riassume il mio problema:Test un'applicazione a riga di comando con il cetriolo/Aruba/Timecop: Come iniettare contesto
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"
Si riduce a When I run ruby -e "puts Time.now"
lanciare un processo figlio e facendo tutti così i miei stub Timecop.freeze
non funzionano, poiché funzionano solo sul processo principale. Devo in qualche modo "iniettare" il contesto corrente nel comando che viene eseguito, ma non riesco a trovare nulla. Sto provando qualcosa di impossibile qui?
Il passo:
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