2009-09-23 5 views
10

Ich lerne Gurke und Webrat mit Rails und hätte gerne einen Ratschlag, wie man ein "Edit" Formular am besten testen kann. Wenn ich zum Profil eines Benutzers blättere, wird mir ein Bearbeitungsformular angezeigt, in dem die Benutzerinformationen in den Formularfeldern vorbelegt sind. Ich würde gerne testen können, dass die Felder tatsächlich die Informationen enthalten, die ich erwarte. Hier ist mein Szenario:Wie überprüfe ich, ob ein Formular mit Werten mit Gurke und Webrat vorbelegt ist?

Scenario: View My Profile 
    Given I am logged in as "Mike" with password "secret" 
    When I go to my profile page 
    Then I should see "Mike" in the "Login" field 
    And I should see "[email protected]email.com" in the "Email" field 
    And I should see a blank "Password" field 
    And I should see a blank "Password confirmation" field 

Gurke sagt mir, richtig, die ich brauche die folgenden benutzerdefinierten Schritte zu definieren:

Then /^I should see "([^\"]*)" in the "([^\"]*)" field$/ do |arg1, arg2| 
    pending 
end 

Then /^I should see a blank "([^\"]*)" field$/ do |arg1| 
    pending 
end 

Ich bin sicher, ich kann einige böse regex herauszufinden, zu implementieren diese Schritte Evaluierung , aber ich denke, dass es etwas geben muss, das bereits existiert oder eleganter ist als ich. Wie bewerten Sie Formulare mit Daten, die in den Formularfeldern bereits ausgefüllt sind?

Antwort

15

Werfen Sie einen Blick auf Funktionen/step_definitions/webrat_steps.rb, der folgende Schritt Definition sieht aus wie, was Sie suchen:

Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| 
    field_labeled(field).value.should =~ /#{value}/ 
end 
+0

Dang. Ich bin mir nicht sicher, wie ich das vermisst habe! Basierend darauf habe ich eine Version erstellt, die für leere Felder funktioniert. Wie in/^ sollte das Feld "([^ \"] *) "leer sein $ /" als "field_labeled (field) .value.should == nil" implementiert sein. Vielen Dank! Ende – SingleShot

Verwandte Themen