2 Stimmen

Reguläre Ausdrücke in Gurkenschritten

Cucumber generiert einige nette Webrat-Regex-Schritte. Ich bin auf ein Problem gestoßen, als ich das hier versucht habe.

Im Feature:

And I fill in "Telephone (Home)" with "61234567"

In Webrat-Schritten:

When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
  fill_in(field, :with => value) 
end

Der Fehler ist aufgetreten:

Could not find field: "Telephone (Home)" (Webrat::NotFoundError)

Es scheint, dass die Klammer zwischen "Home" ein Problem darstellt. Wie kann ich die Regex optimieren, um die Klammern zu berücksichtigen?

UPDATE:

Es scheint, dass die Regex nicht das Problem war, da die " Feld Die Instanzvariable "Telefon (Home)" hat "Telefon (Home)" ergeben. Das eigentliche Problem war die Art und Weise, wie webrat's " Füllung_in "Methode parst die Feldvariable.

1voto

Inshallah Punkte 4686

Wenn Sie nur Folgendes erfassen möchten "Telefon" Versuchen Sie dies:

/^I fill in "(\w+).*?" with "([^\"]*)"$/

Wenn es "Zuhause" versuchen Sie dies:

/^I fill in "(?:.*?\()?(.+?)\)?" with "([^\"]*)"$/;

0voto

BvuRVKyUVlViVIc7 Punkte 11466

Dies ist mir auch bei dem Feld "(abmelden)" aufgefallen...

Sie könnten das Feld id abfragen?

fill_in("user_telephone_home", :with => data)

0voto

phinze Punkte 2177

Ich hatte ein ähnliches Problem mit der Zuordnung von Beschriftungen zu Feldern in webrat, und ich kam mit diesem Codeschnipsel, der die Regexp für die Zuordnung einer Beschriftung zu einem Feld lockert. Vielleicht hilft Ihnen das weiter.

Ich habe dies in meinem features/support/env.rb

module Webrat
  module Locators
    class FieldLabeledLocator < Locator
      def matching_label_elements_with_numbering
        label_elements.select do |label_element|
          text(label_element) =~ /^.*#{Regexp.escape(@value.to_s)}.*$/i
        end
      end
      alias_method_chain :matching_label_elements, :numbering
    end
  end
end

http://gist.github.com/169215

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