状态变量-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
这就是后一个片段有效运作的原因。