其他版本的黄瓜,可以转储所有步骤的列表。然而,这在 javascript 中不受支持。例如:
cucumber -f usage --dry-run
如果您可以访问 World 对象或 Cucumber,我认为可能有一种方法可以列出 Cucumber 用于解析 .feature 文件的所有正则表达式/函数。有谁知道可以为我指明正确方向的 javascript 版本的内部工作原理?
其他版本的黄瓜,可以转储所有步骤的列表。然而,这在 javascript 中不受支持。例如:
cucumber -f usage --dry-run
如果您可以访问 World 对象或 Cucumber,我认为可能有一种方法可以列出 Cucumber 用于解析 .feature 文件的所有正则表达式/函数。有谁知道可以为我指明正确方向的 javascript 版本的内部工作原理?
我发现自己编写更容易,这将需要所有步骤并在找到它们时输出它们。
var container = {
myFn: function(type, regExp, fn) {
console.log(type +' '+regExp.toString());
},
Given: function(regExp, fn) {
this.myFn('Given', regExp, fn);
},
Then : function(regExp, fn) {
this.myFn('Then', regExp, fn);
},
When : function(regExp, fn) {
this.myFn('When', regExp, fn);
}
};
var steps = require('./stepDefinitions');
steps.apply(container);
// stepDefinitions
module.exports = function() {
this.Given(/^I run Cucumber with Protractor$/, function(next) {
next();
});
};
列出所有已定义步骤的快速命令行解决方案:
sed -e '/^[Given|When|Then]/!d' **/*.steps.js | sort | sed 's/, async function (.*{/)/g'
分解它:
sed -e '/^[Given|When|Then]/!d' **/*.steps.js
在所有名为 的文件中查找以“Given”、“When”或“Then”开头的所有行*.steps.js
。sort
对输出进行排序。sed 's/, async function (.*{/)/g'
通过将 ", async function(...) {" 替换为 ")" 来清理每一行可选:添加为 npm/yarn 命令
您可以将其作为脚本添加到您的 package.json 中,例如:
"scripts": {
...
"cucumber:list": "sed -e '/^[Given|When|Then]/!d' **/*.steps.js | sort | sed 's/, async function (.*{/)/g'",
...
},
然后调用yarn cucumber:list
。
这是我们用来检查正在使用哪些步骤定义的:
cucumber-js --require step-definitions/**/*.ts --tags \"@automated and not @skip\" --format usage
我们不会在每次推送时运行所有测试,但我们会运行此检查,因为它有助于确保功能文件或步骤定义不会因为正则表达式问题而中断。