Регулярные выражения в шагах от огурца

Огурец генерирует некоторые аккуратные шаги регулярного выражения. Я столкнулся с проблемой, когда я попробовал это.

В функции:

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

По шагам вебрат:

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

Обнаружена ошибка:

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

Кажется, что скобка между "Домом" дает проблему. Как настроить регулярное выражение для учета скобок?

ОБНОВИТЬ:

Кажется, что регулярное выражение не было проблемой, поскольку переменная экземпляра " field " действительно выдает "Telephone (Home)". Реальная проблема заключалась в том, как метод " fill_in " вебрата анализирует переменную поля.

3 ответа

Решение

Это встретило меня тоже с полем "(выйти)"...

Вы могли бы позвонить в поле id?

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

Если вы хотите захватить только "Телефон", попробуйте это:

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

Если это "Дом", вы после попробуйте это:

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

У меня была похожая проблема с сопоставлением меток с полями в webrat, и я придумал этот фрагмент кода, который ослабляет регулярное выражение, используемое для сопоставления метки с полем. Может быть, это поможет вам.

У меня есть это в моем 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

Другие вопросы по тегам