el escenario siguiente resume bastante bien mi problema:Prueba de una aplicación de línea de comandos con el pepino/Aruba/Timecop: Cómo inyectar el contexto
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"
Se reduce a When I run ruby -e "puts Time.now"
el lanzamiento de un proceso hijo y por lo tanto haciendo que todos mis Timecop.freeze
stubs son ineficaces, ya que solo funcionan en el proceso principal. Necesito de alguna manera 'inyectar' el contexto actual en el comando que se ejecuta, pero parece que no puedo encontrar nada. ¿Estoy intentando algo imposible aquí?
El paso:
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