Мое регулярное выражение не распознается в огурце - помогите! - PullRequest
3 голосов
/ 11 марта 2011

Так что это действительно новый вопрос.

У меня есть шаг, который выглядит так:

Then /^I should see ((phrase 1) | (phrase 2))$/ do
  #stuff
end

После этого у меня есть шаг, который выглядит следующим образом:

Then /^I should see phrase 3$/ do
  And %{I should see phrase 2}
end

Я пытаюсь проверить поток регистрации.

phrase 1 описывает необходимую информацию, которую необходимо заполнить, и мне нужно убедиться, что они отображаются в профиле пользователя.

phrase 3 описывает обязательную и дополнительную информацию, которую пользователь заполняет. Дополнительная информация должна также отображаться в профиле пользователя, и я хочу проверить, что это также показывает.

Я не хочу копировать и вставлять материал с первого шага, поэтому я перефразировал phrase 1, чтобы иметь смысл вызываться с шага phrase 3, но я не знаю, как правильно обратитесь к нему на первом этапе, чтобы заставить его работать. Все, что я получаю от огурца, это то, что I should see phrase 2 не определено.

Как правильно получить эту работу? Есть ли лучший способ достичь моей цели?

1 Ответ

4 голосов
/ 11 марта 2011

Пробельные символы очень важны в регулярных выражениях

. С пробелами на любом конце канала вам нужно использовать этот шаг:

Then %{I should see phrase 1 }

или

Then %{I should see  phrase 2}

(Обратите внимание, что дополнительный пробел в конце на первом и между see и phrase2 на втором).Регулярное выражение все еще ищет те пробельные символы, в которых вы их указали.

Ваше регулярное выражение необходимо изменить на:

Then /^I should see (phrase 1|phrase 2)$/ do |phrase_name|

end

Символ | в регулярном выражении будет соответствовать либо все символы с левой стороны, или все символы с правой стороны (парантезы, конечно, ограничивают его, чтобы не занимать всю строку).

Также вы должны передать значение в свой блок, как я сделал с phrase_name, когда вы используете скобки таким образом.Хотя я, вероятно, предпочел бы увидеть шаг, определенный следующим образом:

Then /^I should see phrase ([\d]+)$/ do |phrase_number|

end

, чтобы он соответствовал всем трем типам фраз, и вам больше не нужно определение фразы 1.[\ d] + будет соответствовать любому числовому символу 1 или более раз.

Затем вы можете делать все, что вам нужно, на основе номера фразы_отправки, который был отправлен.Мне было бы интересно увидеть определение вашего сценария, но я не уверен, что вы собираетесь правильно его использовать, основываясь на этой информации.Возможно, я мог бы получить некоторый контекст, если бы увидел остальную часть истории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...