Cucumber 我可以在我的步骤中处理int和float吗?

Cucumber 我可以在我的步骤中处理int和float吗?,cucumber,Cucumber,我正在尝试为一个用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 ... 对于给定的步骤,cucumber建议如下: Given("a ← tuple[{float}, {float}, {float}, {fl

我正在尝试为一个用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 ...
对于给定的
步骤,cucumber建议如下:

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]
   ...
Cumber建议:

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
s还是
float
s传递给
Tuple.new()
。第一步实现的
给定的
步骤期望浮点数对
int
s的作用相同,但Cucumber不会使用它;它希望我用
int
params再次实现它。我可以只使用浮点参数,例如给定一个← 元组[3.0,-2.0,5.0,1.0]
,但这有点烦人。是定义自定义
参数类型的唯一选项吗?这将需要一个既匹配整数又匹配浮点的regexp;这会优先于现有的
int
float
类型吗?

我建议使用单元测试工具进行这类测试,例如rspec、minitest等。它们更适合

当您可以用一种非技术性和抽象性的语言表达事物时,场景非常有用。您的场景是技术性的、具体的,并且更难阅读和编写

一个类比是试图用自然语言写出数学表达式

(3+5)^3
比将5与3相加,然后将总数进行立方运算要简单得多,也更精确


学习小黄瓜的艺术在于如何写出简单清晰的场景来描述特定的行为。它不是关于使用多个参数、复杂正则表达式、大型表和多个示例。如果你想学习如何Cuke和做BDD,你学习的东西是错误的。如果您想学习ruby并为元组类之类的东西编写测试,那么您使用的工具是错误的。

我建议使用单元测试工具进行此类测试,例如rspec、minitest等。它们更适合

当您可以用一种非技术性和抽象性的语言表达事物时,场景非常有用。您的场景是技术性的、具体的,并且更难阅读和编写

一个类比是试图用自然语言写出数学表达式

(3+5)^3
比将5与3相加,然后将总数进行立方运算要简单得多,也更精确

学习小黄瓜的艺术在于如何写出简单清晰的场景来描述特定的行为。它不是关于使用多个参数、复杂正则表达式、大型表和多个示例。如果你想学习如何Cuke和做BDD,你学习的东西是错误的。如果您想学习ruby并为元组类之类的东西编写测试,那么您使用的工具是错误的