我们可以将单个黄瓜步骤绑定到两个不同类别的两种不同方法

时间:2016-03-17 08:30:49

标签: cucumber gherkin

我的项目中有两个Feature文件,其中一个步骤在这两个文件中很常见,但我需要调用两个不同的Step定义函数,具体取决于写入这些步骤的文件。

我们有任何配置吗?

2 个答案:

答案 0 :(得分:0)

所以,如果我理解正确,你有一行黄瓜,需要执行两种不同的方法?据我所知,这是不可能的。黄瓜会继续告诉你有多个同名的方法。 - 这就是我从你的头衔中得到的。

我从你的解释中得到的是不同的东西。因此,您有2个具有共同步骤的功能文件。一个功能文件是从类文件A获取其步骤,而其他功能文件是从类文件B中获取其步骤?

在这种情况下,您可以最好地扩展您的公共类,以便您可以使用任何功能文件中任何类文件中的任何代码。

答案 1 :(得分:0)

我认为这是可能的唯一方法(但我不推荐)是定义一些变量来跟踪你正在运行的场景。例如,您可以为每个场景添加标签。

<script src="/path/to/externalScript.js"></script>

然后你可以创建一个跟踪

的钩子
  @some_tag
  Scenario: This is scenario 1
    Given I do this thing

  @some_other_tag
  Scenario: This is scenario 2
    Given I do this thing

然后从您的步骤中运行代码,具体取决于@this var。

的值
Before('@some_tag') do
  @this = "foo"
end

Before('@some_other_tag') do
  @this = "bar"
end

但真的,毕竟......你应该有两个不同的步骤

Given(/^I do this thing$/) do
  if @this.eql? "foo"
    <do some code>
  elsif @this.eql? "bar
    <do something else>
  else
    <do other things>
end

Given I do this Foo Thing

这将有助于更好地描述测试实际在做什么。