Я использую таблицу сценариев ( аргументы многострочного шага ), чтобы проверить некоторые данные на экране, используя огурец, используя встроенный .diff! метод по таблице 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)
Есть идеи? Я застрял.