Я пытаюсь написать тесты для класса 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
?