Cucumber “我能写吗?”;或;黄瓜的声明?

Cucumber “我能写吗?”;或;黄瓜的声明?,cucumber,cucumberjs,Cucumber,Cucumberjs,我不熟悉Cucumber测试框架,正在尝试测试一个表是否包含一个单元格中的值。我要查找的值可以在4个不同的值之间变化:挂起、空闲、活动和未知。如何测试这些值中是否至少存在一个 这是我目前拥有的,但它只测试其中一个值: Scenario: Status exists in my table When I am in the Edge UI And I click "Administration" And I click "Sites" Then I see

我不熟悉Cucumber测试框架,正在尝试测试一个表是否包含一个单元格中的值。我要查找的值可以在4个不同的值之间变化:挂起、空闲、活动和未知。如何测试这些值中是否至少存在一个

这是我目前拥有的,但它只测试其中一个值:

  Scenario: Status exists in my table
    When I am in the Edge UI
     And I click "Administration"
     And I click "Sites"
    Then I see "Site Elements"
     And I see "Idle" inside table
这就是我希望能够做到的:

  Scenario: Status exists in my table
    When I am in the Edge UI
     And I click "Administration"
     And I click "Sites"
    Then I see "Site Elements"
     And I see "Idle" or "Pending" or "Active" or "Unknown" inside table 

您可以将最后一行中的正则表达式模式设置为如下所示:

我明白了(*)

在该方法之后,您可以使用ifs ose开关

开关(参数) { 案例:“空闲”: //这里的逻辑
}是的,cucumber表达式通过
/
为您提供了使用or的灵活性。
有关更多信息,请参阅。

您应该以不同的方式书写Cukes。与其用你的cukes来记录你是如何做的,不如用cukes来记录你在做什么以及为什么它很重要。这涉及到将所有HOW推入步骤定义或更好的由步骤定义调用的helper方法

您希望场景做的第二件事就是实际测试某些行为。因此,理想情况下,您希望执行一些更改其中一种状态的操作,即,您执行的操作将导致值从挂起变为活动

所有这些关于点击这个和点击那个并看到特定字符串的东西都是编写非常脆弱的场景的一个非常好的方法,只要有人改变一些事情如何完成的小细节,这些场景就会中断,即使这些更改不会破坏正在做的事情的功能

Scenario: Any status exists in my table
 When I am in the Edge UI
  And I click "Administration"
  And I click "Sites"
 Then I see "Site Elements"
  And I see a site status inside the table 
我相信这就是你们在这里想要表达的。在步骤定义中,您可以检查它是否为可识别状态之一

Given('我在表中看到一个站点状态',函数(){…})

但是,如果您试图找到每个场景,然后将其拆分为场景大纲,并使用此处的其他一些答案作为灵感,您可以匹配每个场景中的状态:

defineParameterType(new ParameterType(
    'siteStatus',      
    /Idle|Pending|Active|Unknown/,
    String,             
    s => new String(s)
))

Given('I see "{siteStatus}" inside the table', function (){...})

表“$/,function(){…}”中给定(/^I see)(空闲|挂起|活动|未知)

旁边

Scenario Template: Each status exists in my table
 When I am in the Edge UI
  And I click "Administration"
  And I click "Sites"
 Then I see "Site Elements"
  And I see a "<status>" inside the table

Scenarios:
 | status  |
 | Idle    |
 | Pending |
 | Active  |
 | Unknown |
场景模板:每个状态都存在于我的表中
当我在Edge UI中时
我点击“管理”
我点击“站点”
然后我看到“站点元素”
我看到桌子里面有一个“”
情节:
|地位|
|闲散|
|未决|
|活跃的|
|不为人知|

您肯定想解释字符串的结尾。我在表中看到(*),然后解析出引号中的字符串。还值得一看Regexp.exec()和matchAll()。