我是Cucumber-Ruby的新手。在定义场景之后,我在终端中执行了测试,并且黄瓜建议了如下代码:
然后(“应启用全部显示按钮”)执行
pending#在此编写代码,将上述短语转化为具体行动
端
然后(“应禁用全部显示按钮”)执行
pending#在此编写代码,将上述短语转化为具体行动
端
我更改了以下代码
然后(“应显示所有按钮(启用|禁用)”)执行 |状态|
放(状态)
端
但即便在我使用终端执行测试后,我收到了添加片段的建议。
当我更改下面的代码时,它工作
然后(/ ^显示全部按钮应该(启用|禁用)$ /)执行 |州|
放(状态)
端
有人可以帮我描述代码之间的区别吗?
使用
Ruby:ruby 2.3.3p222 黄瓜:3.1.0
答案 0 :(得分: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
这就是后一个片段有效运作的原因。