2010-12-24 22 views
0

Ich habe eine einfache Cuke-Funktion für ein Formular auf einer Demo-Site geschrieben. Die Funktion sieht so aus.Formularübergabe mit Cucumber testen

Given I am on the home page 
    When I set the "Start Date" to "2010-10-25" 
    And I set the "End Date" to "2011-1-3" 
    And I press the "Go" button 
    Then I should see "Cake Shop" 

Die Idee ist, dass, nachdem ich die Go-Taste drücken, wird eine neue Seite zu laden, um eine Liste der Ergebnisse zeigt, und eines der Ergebnisse sollte „Cake Shop.“

Aber ich habe es nicht geschafft, dies zu arbeiten. Gibt es etwas, das mir fehlt?

Edit: Hier ist die Schrittdefinitionen.

Der letzte Schritt ist in web_steps.rb definiert. Ich glaube ... und es ist immer da, dass es scheitert.

expected #has_content?("Cake Shop") to return true, got false 

(RSpec :: :: Erwartungen ExpectationNotMetError) ./features/step_definitions/web_steps.rb:110:in `Block (2 Ebenen) in"

+0

einige Code in Ordnung ist. Genauer gesagt, Ihre Gurke Schritte. Auch etwas über das, was fehlgeschlagen ist. – DJTripleThreat

+0

@DJTripleThreat Ich habe gerade die Schritte hinzugefügt, die ich verwende. – picardo

Antwort

1
  1. Wenn Sie Capybara verwenden, um Tests durchzuführen, wird im Schritt "Dann zeige mir die Seite" der HTML-Code der aktuellen Seite in den tmp-Ordner geschrieben, sehen Sie sich das an.

  2. Woher kommen die Daten "Konditorei"? Wird Ihre Datenbank zurückgesetzt, bevor Sie die Tests ausführen? Normalerweise, wenn Ihre Gurken einige Setup-Daten benötigen, ist es am besten, explizit anzugeben, dass die Daten mit einem Schritt vorhanden sind, und sie für jeden Test einzufügen. z.B.

    existiert das Element "Konditorei" Angesichts

+0

Ja, ich benutze Capybara. "Cake Shop" existiert - ich habe rake db: test: prepare - und es sollte auf der nächsten Seite erscheinen, die nach der Formularübergabe geladen wird. Das ist also die Seite, die ich versuche zu überprüfen, eigentlich nicht die aktuelle Seite. Ich weiß nicht, was ich verwenden sollte, um das zu überprüfen ... – picardo

+0

Aktuelle Seite bedeutet die Seite, die der Benutzer sehen würde, wenn sie das Formular eingereicht hätten. Unter der Annahme, dass das Formular korrekt eingereicht wurde, wäre die "aktuelle Seite" die Ergebnisseite oder die "nächste Seite". Fügen Sie einfach den Schritt "Dann zeigen Sie mir die Seite" vor dem Schritt "Dann sollte ich sehen" ein. Wie bereits erwähnt, ist es viel übersichtlicher, Daten manuell in Ihren Schritten einzurichten, anstatt sich darauf zu verlassen, dass Ihre App vor jedem Test in einem undokumentierten erwarteten Zustand ist. – JamesAlmond

Verwandte Themen