Могу ли я лечить int и использовать то же самое в своих шагах от Cucumber? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь написать тесты для класса Tuple, который пишу на Ruby (это упражнение для изучения как Ruby, так и Gherkin).Поэтому один из моих сценариев создает кортеж со значениями с плавающей запятой:

Scenario: A tuple with w=1.0 is a point
  Given a ← tuple[4.3, -4.2, 3.1, 1.0]
   Then a.x = 4.3
    And ...

Для шага Given огурец предлагает следующее:

Given("a ← tuple[{float}, {float}, {float}, {float}]") do |float, float2, float3, float4|
  pending # Write code here that turns the phrase above into concrete actions
end

, который я реализовал как:

Given("a ← tuple[{float}, {float}, {float}, {float}]") do |float, float2, float3, float4|
  tuple_a = Tuple.new(float, float2, float3, float4)
end

Отлично.Теперь я хочу другой сценарий, в котором целые числа передаются в кортеж:

 Scenario: Adding two tuples
   Given a ← tuple[3, -2, 5, 1]
   ...

И Cucumber предлагает:

Given("a ← tuple[{int}, {int}, {int}, {int}]") do |int, int2, int3, int4|
  pending # Write code here that turns the phrase above into concrete actions
end

Но моя реализация в Ruby;Меня не волнует, передам ли я int с или float с Tuple.new().Шаг Given, который я реализовал первым, который предполагает, что float будет работать одинаково для int s, но Cucumber не будет использовать это;он хочет, чтобы я снова реализовал его с int параметрами.Я мог бы просто использовать аргументы с плавающей точкой, например Given a ← tuple[3.0, -2.0, 5.0, 1.0], но это немного раздражает.Является ли мой единственный вариант определения пользовательского ParameterType?Это повлечет за собой регулярное выражение, которое соответствует как целым числам, так и числам с плавающей точкой;будет ли он иметь приоритет над существующими типами int и float?

1 Ответ

0 голосов
/ 04 марта 2019

Я бы предложил использовать инструменты модульного тестирования для таких вещей, как rspec, minitest и т. Д. Они гораздо лучше подходят.

Сценарии полезны, когда вы можете выразить вещи на языке, который не является техническим и абстрактным.Ваши сценарии являются техническими и конкретными, и их гораздо сложнее читать и писать.

Аналогия - попытка написать математические выражения в естественном языке.

(3+5)^3 гораздо проще и точнее, чем, add 5 to 3 and then cube the total

Искусство обучения огурца заключается в том, как написать простые понятные сценарии, которые описывают конкретное поведение.Речь идет не об использовании нескольких параметров, сложных регулярных выражений, больших таблиц и нескольких примеров.Вы учитесь неправильным вещам, если хотите научиться куковать и делать BDD.Вы используете неправильный инструмент, если хотите изучать ruby ​​и писать тесты для таких вещей, как класс Tuple.

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