11 Stimmen

Capybara::FrozenInTime Fehler in Integrationsspezifikationen mit Rspec + Timecop + Capybara + Capybara Webkit

Ich sehe einen Fehler in einigen Integrationstests, die rspec, capybara, capybara-webkit und timecop verwenden.

Capybara::FrozenInTime:
   Die Zeit scheint eingefroren zu sein. Capybara funktioniert nicht mit Bibliotheken, die die Zeit einfrieren. Betrachten Sie stattdessen die Verwendung von Zeitreisen

Das einzige Gem, von dem ich weiß, dass es die Zeit einfriert, ist Timecop, aber ich benutze es nicht im fehlerhaften Testfall.

Da der Fehler nur manchmal auftritt, kann ich nicht einmal wissen, ob er nach einer Änderung behoben ist oder nicht.

11voto

Matt Dressel Punkte 2134

Das Ende der Fehlermeldung enthält die Lösung:

Betrachten Sie stattdessen die Verwendung von Zeitreisen

Ändern Sie einfach Timecop.freeze in Timecop.travel. Timecop.freeze unterbricht die Auto-Warte-Funktion von Capybara.

Zusätzlich würde ich Timecop.return in einem after-Block aufrufen, da es mit dem zuletzt verwendeten Reise-Block assoziiert wird:

after :each do
  Timecop.return

6voto

hsgubert Punkte 2256

Die Lösung, die ich gefunden habe, war folgende:

before :each do
  Timecop.return
end

in spec_helper.rb.

Auf diese Weise stellen wir sicher, dass die Zeit vor jedem Test nicht eingefroren ist, obwohl nur diejenigen davon betroffen sind, die in einem WebDriver ausgeführt werden, der sich von rack-test unterscheidet. In meinem Fall capybara-webkit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X