Использование регулярного выражения в операторе Ruby / Capybara приводит к ошибке 'Regex соответствует 0 аргументам' - PullRequest
0 голосов
/ 04 июля 2019

Я тестирую сайт с помощью веб-драйвера Cucumber / Selenium и Capybara. Я пытаюсь создать статистику случая в своем пошаговом определении, чтобы у меня не было нескольких «данных» для каждой страницы моего сайта.

У меня есть следующее:

Given /^I am on the .+ page$/ do |page_name|
  case page_name
  when "I am on the home page"
   visit ('/')
  else
    puts "page #{page_name} not found"
  end 
end

Когда я запускаю cucumber в терминале для запуска тестов, я получаю

Учитывая, что я домаpage # features / step_definitions / home_page.rb: 3 Ваш блок принимает 1 аргумент, но Regexp соответствует 0 аргументам.(Cucumber :: Glue :: ArityMismatchError) features / step_definitions / home_page.rb: 3: in /^I am on the .+ page$/' features/homepage.feature:5:in Учитывая, что я на главной странице '

Я попытался обернуть регулярное выражение в (), {}, [], "", '' и различные их комбинации, я проверил отступ моего кода, и я считаю правильным.

Я поставил свойРегулярно проверяйте онлайн-валидатор, и он прекрасно его подбирает.

1 Ответ

1 голос
/ 04 июля 2019

Ваш блок принимает параметр page_name, но в вашем Regex нет группы захвата, которая будет использоваться в качестве этого параметра.Вы, вероятно, хотите что-то вроде

Given /^I am on the (.+) page$/ do |page_name|

, поэтому часть .+ захватывается и передается как page_name

...