Cucumber JS - 选择部分或全部句子

时间:2017-07-21 11:08:49

标签: javascript regex cucumber

我正在尝试定义一个包含相同逻辑但可能措辞不同的可重用步骤。例如:

the message "Running defect detection module..." should be displayed

the message "Defect detection complete." should be displayed when the process is complete

到目前为止,我的正则表达式如下:

/^the message "([^"]*)" should be displayed$/

我也尝试过以下正则表达式:

/^the message "([^"]*)" should be displayed(\s*\w*)*$/

但我没有结果。有什么想法吗?

提前谢谢

2 个答案:

答案 0 :(得分:0)

这个怎么样?



function check(str) {
  return /^the message \"(.*)\" should be displayed(.*)$/.test(str);
}

function test(str) {
  console.log(str, " => ", check(str));
}

test("the message \"Running defect detection module...\" should be displayed");
test("the message \"Defect detection complete.\" should be displayed when the process is complete");




答案 1 :(得分:0)

我建议不要尝试创建这样的步骤。而是给消息一个名称(它封装了它尝试通信的内容)并为每个消息编写一个步骤

e.g。

然后'我应该看到缺陷检测正在运行' 然后'我应该看到缺陷检测已经完成'

Cucumber不能很好地测试UI中出现的内容。我们的想法是使用UI中显示的内容来确认某个业务行为是否有效,并且这样做的方式是每次更改一个小细节时场景都不会失败(例如,消息以资本开头,或者添加了一些标点符号,或者使用一些很酷的图形来显示缺陷检测正在运行。

使用正则表达式创建复杂步骤以匹配一系列场景内容是一种反模式。大约10年前,当我开始讨论时,我在每个步骤定义中都使用了正则表达式,现在我根本就不使用它们。