【问题标题】:Cucumber tests. Get step regexp dynamically黄瓜测试。动态获取步骤正则表达式
【发布时间】:2017-01-03 11:37:36
【问题描述】:

我想统计一下每个步骤在黄瓜测试中使用了多少次

所以可以说我有一个类似的步骤定义

this.When(/^"([^"]*)" is clicked$/, function (someElementId, callback){});

以及此步骤的 2 种用法(在一个或多个功能文件中)

"a" is clicked
"b" is clicked

我想知道这一步"([^"]*)" is clicked 被使用了两次,并获得了每次执行所用的时间。我想在不触及实际步骤定义的情况下动态完成。

我可以在 after step 事件中获得像 "a" was clicked 这样的步骤名称,但我无法获得正则表达式。理想情况下,我想得到像step.getRegexp()这样的东西:

 this.AfterStep(function (step, callback) {
   console.log(step.getName())// => prints "a" was clicked
   //need smth like step.getRegexp() to make "a" and "b" click identified as the same step
 }

【问题讨论】:

    标签: javascript cucumber tdd integration-testing cucumberjs


    【解决方案1】:

    您可以使用相同的正则表达式来匹配步骤的名称。

    let clickCounter = 0;
    
    module.exports = function () {
      const LINK_IS_CLICKED_STEP_REGEXP = /^"([^"]*)" is clicked$/;
    
      this.When(LINK_IS_CLICKED_STEP_REGEXP, function (someElementId, callback){});
    
      this.AfterStep(function (step) {
        if (LINK_IS_CLICKED_STEP_REGEXP.test(step.getName())) {
          clickCounter++;
        }
      });
    }
    

    【讨论】:

    • 这样我就不得不去修改我想避免的每一个步骤,因为我有很多并且在多个文件中
    • 对不起,我是黄瓜/小黄瓜的新手,你说的是修改特征文件还是步骤定义文件?
    • 理想情况下我想使用钩子 this.AfterStep this.BeforeStep 来收集有关每个步骤定义的统计信息:使用了多少次,执行了多长时间等等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多