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

时间:2018-06-14 06:13:34

标签: ruby cucumber

我是Cucumber-Ruby的新手。在定义场景之后,我在终端中执行了测试,并且黄瓜建议了如下代码:

  
    

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

         

pending#在此编写代码,将上述短语转化为具体行动

         

         

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

         

pending#在此编写代码,将上述短语转化为具体行动

         

  

我更改了以下代码

  
    

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

         

放(状态)

         

  

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

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

  
    

然后(/ ^显示全部按钮应该(启用|禁用)$ /)执行 |州|

         

放(状态)

         

  

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

使用

Ruby:ruby 2.3.3p222 黄瓜:3.1.0

1 个答案:

答案 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

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