Огурец + капибара Проверка текста, появляющегося несколько раз - PullRequest
3 голосов
/ 06 июля 2011

Я хочу проверить, появляется ли данная строка несколько раз в некоторых сценариях

Я нашел это в другом месте:

Then /^I should see "([^\"]*)" twice$/ do |text|
  regexp = Regexp.new(text + "(.+)" + text)
  response.body.should contain(regexp)
end

Это было написано для webrat.Я пытаюсь выразить это с помощью Capybara:

Then /^I should see "([^"]*)" twice$/ do |text|
  regexp = Regexp.new(text + "(.+)" + text)
  if page.respond_to? :should
    page.should have_xpath('//*', :text => regexp)
  else
    assert page.has_xpath?('//*', :text => regexp)
  end
end

, что дает мне ожидаемый #has_xpath ("// *") для возврата true, получил false

Я также пробовал многострочный вариантприведенного регулярного выражения.

1 Ответ

3 голосов
/ 07 июля 2011

Решение, которое я использовал в конце концов, связавшись с регулярным выражением.Я понимаю, что "([^ /] )" будет воспринимать что-то как регулярное выражение, а "([^"] ) "воспринимать что-то как открытый текст:

Then /^I should see "([^\/]*)" "(.+)" times$/ do |regexp, times|
  str = regexp
  for i in times
    str = str + "(.+)" + regexp
  end
  regexp = Regexp.new(str)
  if page.respond_to? :should
    page.should have_xpath('//*', :text => regexp)
  else
    assert page.has_xpath?('//*', :text => regexp)
  end
end
...