我正在尝试定义一个包含相同逻辑但可能措辞不同的可重用步骤。例如:
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*)*$/
但我没有结果。有什么想法吗?
提前谢谢
答案 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年前,当我开始讨论时,我在每个步骤定义中都使用了正则表达式,现在我根本就不使用它们。