Как использовать регулярные выражения в таблице Cucumber (многострочный аргумент) для сравнения с таблицей?

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

Есть идеи? Я застрял.

6
задан Alister Scott 15 August 2011 в 06:28
поделиться