Frage

ich eine Gurke Tisch haben, eines der Felder ist ein Datum, das ich mit dem heutigen Datum bevölkert haben möchten . Gibt es eine Möglichkeit, dies zu tun, ohne in die Tabelle zu hart Code heutigen Datum hat?

Im Grunde würde Ich mag Time.now.strftime("%Y-%m-%d") in die Tabelle eintragen und nicht haben es brechen.

War es hilfreich?

Lösung

Da die Tabelle von Ihrer Schrittdefinition verarbeitet wird, können Sie eine spezielle Platzhalter in dem Tisch legen, wie die Zeichenfolge „todays_date“, und dann map_column! verwenden, um die Daten in der Spalte auf das gewünschte Format zu verarbeiten.

Zum Beispiel in der folgenden Tabelle angegeben

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

In Ihrem Schritt Definition müßten Sie

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

Hinweis: Dies ist nur die Werte ändert sich, wenn Sie für den Hash fragen. Tisch und table.raw wird die gleiche bleiben, aber wenn Sie die Zeile Hashes benötigen, werden sie durch den Code innerhalb des map_column umgewandelt werden!

Andere Tipps

Ich weiß, es Ewigkeiten, da diese Frage gestellt wurde, aber ich war vor kurzem etwas ähnliches mit Gurke tut also hier ist eine alternative Lösung, wenn jemand interessiert ...

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

Und dann in Ihrem Schritt Definition nur eval () das Datum Zeichenfolge

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

Obwohl im Gegensatz zu Brandons Beispiel diese pflegen lassen Sie in genauen Daten legen auch ohne eine weitere Logik.

bodnarbm Antwort ist ziemlich gut, wenn das ist, was Sie tun möchten. Mein eigener Vorschlag einen Blick auf dem Timecop gem . Verwenden Sie es an der Zeit zu einem bekannten Tag einzustellen, dann passen Sie Ihre Tabellen entsprechend.

Basierend auf Vorrichtungen Dateien, die ich diesen Code erstellt:

Feature:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top