Pregunta

Tengo una tabla Pepino , uno de los campos es una fecha en la que me gustaría haber completado la fecha de hoy . ¿Hay alguna forma de hacer esto sin tener que codificar la fecha de hoy en la tabla?

Básicamente, me gustaría ingresar Time.now.strftime ("% Y-% m-% d ") en la tabla y no hacer que se rompa.

¿Fue útil?

Solución

Dado que la definición de pasos está procesando la tabla, puede colocar un marcador de posición especial en la tabla, como la cadena " TODAYS_DATE " ;, y luego usar map_column! para procesar los datos. en la columna al formato que desee.

Por ejemplo, dada la siguiente tabla

Given the following user records
  | username | date        |
  | alice    | 2001-01-01  |
  | bob      | TODAYS_DATE |

En tu definición de paso tendrías

Given /^the following user records$/ do |table|
  table.map_column!('date') do |date| 
    if date == 'TODAYS_DATE'
      date = Time.now.strftime("%Y-%m-%d")
    end
    date
  end
  table.hashes.each do |hash|
    #Whatever you need to do
  end
end

Tenga en cuenta que esto solo cambia los valores cuando solicita el hash. table y table.raw seguirán siendo los mismos, pero siempre que necesite los hashes de fila, ¡serán convertidos por el código dentro de map_column!

Otros consejos

Sé que han pasado años desde que se hizo esta pregunta, pero recientemente estaba haciendo algo similar con Cucumber, así que aquí hay una solución alternativa si alguien está interesado ...

Given the following user records
 | username | date                             |
 | bob      | Time.now.strftime("%Y-%m-%d")    |

Y luego, en su definición de paso, solo eval () la cadena de fecha

Given /^the following user records$/ do |table|
  table.hashes.each do |hash|
    date = eval(hash["date"])
  end
end

Aunque a diferencia del ejemplo de Brandon, esto no te permitirá ingresar fechas exactas sin más lógica.

La respuesta de

bodnarbm es bastante buena si eso es lo que quieres hacer. Mi sugerencia sería echar un vistazo a la timecop gem . Úselo para ajustar la hora a un día conocido y, a continuación, ajuste sus tablas en consecuencia.

Basándome en los archivos de accesorios, creé este código:

Característica:

Given the following "Inquirers":
  | id | email                    | start_date        |
  |  1 | alberto@deco.proteste.pt | <%= Time.now %>   |

Helper:

Given(/^the following "(.*?)":$/) do |model, table|
  table.hashes.each do |hash|
    attributes = Rack::Utils.parse_nested_query(hash.to_query)
    object     = model_name.classify.constantize.new

    attributes.keys.each do |key|
      object.send("#{key}=", ERB.new(value).result())
    end
    ...
  end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top