Я использую таблицу сценария ( аргументы многострочного шага ) для проверки некоторых данных с экрана с помощью огурца, используя встроенный .diff! в таблице Cucumber AST.
Я хотел бы проверить совпадение содержимого с регулярными выражениями.
Scenario: One
Then the table appears as:
| One | Two | Three |
| /\d+/ | /\d+/ | /\d+/ |
Фактическая таблица может выглядеть примерно как
| One | Two | Three |
| 123 | 456 | 789 |
, что в этом сценарии переводится в «до тех пор, пока есть несколько цифр, Мне все равно »
Пример реализации шага, который не работает:
Then /^the table appears as:$/ do |expected_table|
actual_table = [['One','Two', 'Three'],['123', '456', '789']]
expected_table.diff! actual_table
end
Ошибка:
Then the table appears as: # features/step_definitions/my_steps.rb:230
| One | Two | Three |
| /\\d+/ | /\\d+/ | /\\d+/ |
| 123 | 456 | 789 |
Tables were not identical (Cucumber::Ast::Table::Different)
Я пробовал использовать преобразование шагов для преобразования ячеек в регулярные выражения, но они все еще не идентичны.
Преобразовать код:
expected_table.raw[0].each do |column|
expected_table.map_column! column do |cell|
if cell.respond_to? :start_with?
if cell.start_with? "/"
cell.to_regexp
else
cell
end
else
cell
end
end
end
, который дает ошибку:
Then the table appears as: # features/step_definitions/my_steps.rb:228
| One | Two | Three |
| (?-mix:\\d+) | (?-mix:\\d+) | (?-mix:\\d+) |
| 123 | 456 | 789 |
Tables were not identical (Cucumber::Ast::Table::Different)
Есть идеи? Я застрял.