Регулярное выражение с запятой говорит мне, что есть 6 аргументов, а не 4 - PullRequest
1 голос
/ 22 марта 2012

У меня есть таблица схемы сценария, которая выглядит следующим образом:

Scenario Outline: Verify Full ad details
    Given I am on the xxx classified home page
    And I have entered <headline> in the search field & clicked on search
    When I click on full details
    Then I should see <headline> <year> <mileage> <price> displaying correctly and successfully

    Examples:
    |headline               |year   |mileage    |price      |
    |alfa romeo 166         |2005   |73,000     |6,990      |

Когда я запускаю свой сценарий, он выплевывает, что у меня есть 6 аргументов. Но то, что я думал, у меня должно быть только 4 аргумента: заголовок, год, пробег и цена. Я думаю, что он принимает запятую и то, что до и после нее, как два отдельных аргумента.

Есть ли способ заставить огурца думать, что в приведенном ниже примере есть только 4 аргумента?

Я видел, как возиться с регулярным выражением, но, похоже, я никуда не денусь Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

Полагаю, это последний шаг, с которым у вас возникли проблемы.

Когда я попробовал последний шаг, по умолчанию был задан шаг огурца:

Then /^I should see alfa romeo (\d+) (\d+) (\d+),(\d+) (\d+),(\d+) displaying correctly and successfully$/ do |arg1, arg2, arg3, arg4, arg5, arg6|
  pending # express the regexp above with the code you wish you had
end

Я не уверен, как Cucumber определяет определение предлагаемого шага, но это не то, что вам подойдет. Как вы сказали, 6 аргументов неверно. Кроме того, этот шаг будет соответствовать только тем примерам, где заголовок начинается с «alfa romeo».

Изменение определения шага на следующее решит ваш текущий пример сценария:

Then /^I should see (.+) (\d+) ([\d|,]+) ([\d|,]+) displaying correctly and successfully$/ do |arg1, arg2, arg3, arg4|
    puts arg1   #=> alfa romeo 166
    puts arg2   #=> 2005
    puts arg3   #=> 73,000
    puts arg4   #=> 6,990
end

Два изменения:

1) Номера в формате запятой были изменены на:

([\d|,]+)

, что означает, что оно будет соответствовать любому номеру или запятой. Если ваши числа также могут содержать десятичные дроби, вам нужно что-то вроде:

([\d|,|.]+)

2) Заголовок также был изменен, чтобы получить полный заголовок, а не только конечный номер.

0 голосов
/ 22 марта 2012

Хорошим способом форматирования чисел в этом случае является использование подчеркивания вместо запятых или точек.Вы избегаете проблем локали (1.000 против 1000) и сохраняете некоторое форматирование.

|headline               |year   |mileage    |price      |
|alfa romeo 166         |2005   |73_000     |6_990      |
0 голосов
/ 22 марта 2012

Поскольку 73 000/6 990 - это просто целое число, вы можете просто ввести его как 73000/6990 (без запятых)?Я не вижу в этом проблемы, если вам по какой-то причине не нужен этот формат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...