在Cucumber.js中是否可以列出所有可用的步骤?

时间:2014-06-26 09:05:19

标签: javascript cucumber cucumberjs

其他版本的黄瓜,可以转储所有步骤的列表。但是在javascript中不支持此功能。例如:

cucumber -f usage --dry-run

如果您可以访问World对象或Cucumber,我认为可能有一种方法可以列出Cucumber用于解析.feature文件的所有正则表达式/函数。有谁知道javascript版本的内部工作方式可以指向我正确的方向?

3 个答案:

答案 0 :(得分:2)

我发现自己编写起来比较容易,这需要在发现它们时输出所有步骤。

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();
  });
};

答案 1 :(得分:0)

这是我们用来检查正在使用的步骤定义的内容:

cucumber-js --require step-definitions/**/*.ts --tags \"@automated and not @skip\" --format usage

我们不会在每次推送时都运行所有测试,但是我们会运行此检查,因为这有助于确保功能文件或步骤定义不会由于正则表达式问题而中断。

答案 2 :(得分:0)

列出所有定义步骤的快速命令行解决方案:

sed -e '/^[Given|When|Then]/!d' **/*.steps.js | sort | sed 's/, async function (.*{/)/g'

分解:

  • sed -e '/^[Given|When|Then]/!d' **/*.steps.js 在名为 *.steps.js 的所有文件中查找以“Given”、“When”或“Then”开头的所有行。
  • 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