步骤定义是具有表达式的 ,它将该定义与一个或多个 表达式 链接到一个或多个 Gherkin 步骤。当 Cucumber 执行场景中的 Gherkin 步骤 时,它将查找匹配的步骤定义来执行。

为了说明它是如何工作的,请查看以下 Gherkin 场景

Scenario: Some cukes
  Given I have 48 cukes in my belly

步骤的 I have 48 cukes in my belly 部分(Given 关键字后的文本)将匹配以下步骤定义

表达式

步骤定义的表达式可以是 正则表达式Cucumber 表达式。本节中的示例使用 Cucumber 表达式。如果您更喜欢使用正则表达式,则匹配中的每个 将作为参数传递给步骤定义的

如果 表达式与注册的 参数类型 之一的 regexp 相同,则在将捕获的字符串传递给步骤定义的 之前,它将被转换。在上面的示例中,cukes 参数将是一个整数,因为内置的 int 参数类型的 regexp\d+

状态管理

步骤定义可以通过将状态存储在实例变量中,将状态传递给后续的步骤定义。

范围

步骤定义不链接到特定的功能文件或场景。步骤定义的文件、类或包名称不会影响它将匹配的 Gherkin 步骤。唯一重要的是步骤定义的表达式。

代码片段

当 Cucumber 遇到没有匹配步骤定义的 Gherkin 步骤 时,它将打印一个具有匹配 Cucumber 表达式 的步骤定义代码片段。您可以将此作为新步骤定义的起点。

请考虑这个 Gherkin 步骤

Given I have 3 red balls

如果您没有匹配的步骤定义,Cucumber 将建议以下代码片段

建议的代码片段将使用您自己的 参数类型,如果它们匹配您未定义步骤的某些部分。如果存在 color 参数类型,Cucumber 将在建议的表达式中使用它

}

确保在运行 Cucumber 时使用 summary 插件,以便打印代码片段。

您可以帮助我们改进此文档。 编辑此页面.