状态变量-Cutcumber – Ruby -Regular表达式

我是Cucumber-Ruby的新手。 在定义场景后,我在终端执行了测试,黄瓜建议的片段如下:

然后 (“应启用全部显示按钮”) 执行

pending#在这里编写代码,将上面的短语变成具体的动作

结束

然后 (“应该禁用全部显示按钮”)

pending#在这里编写代码,将上面的短语变成具体的动作

结束

我改变了下面的代码

然后 (“显示所有按钮应该(启用|禁用)”) 执行 | state |

看跌期权(州)

结束

但即使在那之后,当我使用终端执行测试时,我收到了添加片段的建议。

当我更改下面的代码时,它工作

然后 (/ ^ Show All按钮应该是(启用|禁用)$ /) do | state |

看跌期权(州)

结束

有人可以帮我描述代码之间的区别吗?

使用

ruby:ruby2.3.3p222黄瓜:3.1.0

Cucumber将传递给Then的参数与使用case-equal aka triple-equal的场景标题进行比较。 也就是说,对于场景标题"Foo Bar"和片段Then something do ,它会执行

 something === "Foo Bar" 

对于字符串,三重相等别名为==并且由于"Show ... (enabled|disabled)"字符串不等于"Show ... enabled"不是"Show ... disabled" ,因此不匹配任何内容。

OTOH,当您将参数更改为Regexp ,它匹配

 /^Show ... (enabled|disabled)$/ === "Show ... enabled" #⇒ true 

这就是后一个片段有效运作的原因。