【问题标题】:How to limit capture group options in Cucumber when passing dynamic parameters?传递动态参数时如何限制 Cucumber 中的捕获组选项?
【发布时间】:2020-11-11 08:57:44
【问题描述】:

我正在使用 Cucumber 和 WebdriverJS 编写测试自动化步骤定义。我有以下功能文件

Scenario Outline : Validate whatever in this scenario works
  Given I have a <Service Method> for test store
  Then validate that something exists
 
  Example :

  |Service Method|
  |Carryout      |
  |Delivery      |
  |Dine-in       |

我正在将此黄瓜步骤映射到以下自动生成的步骤定义文件

this.Given(/^I have a (.*) order$/, function (serviceMethod) {}

在这种情况下,我希望这个函数仅在黄瓜参数是 (carryout|delivery|dine-in) 之一时处理。

我尝试通过尝试以下正则表达式来限制捕获组,但在此之后黄瓜步骤定义未映射到 nodeJS 步骤定义。

this.Given(/^I have a (.*) (carryout|delivery|dine-in)? order$/, function (serviceMethod) {}

如何解决?任何帮助都非常感谢

【问题讨论】:

  • 试试/^I have a (.*?)(?: (carryout|delivery|hotspot))? order$/
  • @WiktorStribiżew 谢谢,我会试试这个。
  • @WiktorStribiżew 您建议的查询对我不起作用。但这现在对我有用this.Given(/^I have a (carryout|delivery|dine-in) order$/, function (serviceMethod) {}
  • 嗯,现在还不清楚。这个问题看起来好像你想匹配一个可选的字符串。

标签: node.js regex selenium-webdriver automation cucumber


【解决方案1】:

如果您需要其中一种类型的订单,您可以通过断言它存在来加快处理速度,
然后放下容器的华丽形式。

/^(?=.* (carryout|delivery|dine-in) )I have a.*order$/

第 1 组包含订单的 TYPE

【讨论】:

    【解决方案2】:

    this.Given(/^I have a (carryout|delivery|dine-in) order$/, function (serviceMethod) {}

    上面的步骤定义终于对我有用了。

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多