黄瓜表达与CucumberJS 2.0.0+

时间:2017-02-24 13:17:16

标签: javascript automated-tests cucumber bdd cucumberjs

背景

我正在努力弄清楚CucumberJS 2.0.0,自1.3.0以来发生了很大变化。

Cucumber表达式可用于步骤定义中以替换正则表达式:

When(/^I search for "{searchTerm}"$/, function (searchTerm) {

而不是:

When(/^I search for "([^"]*)"$/, function (searchTerm) {

我们想使用似乎是CJS2一部分的Cucumber表达式,使我们的步骤定义更具可读性(在某些地方我们有相当多的正则表达式会让初学者感到困惑)我们无法想象如何做到这一点。

问题

参考Cucumber表达式的documentation,一切似乎都很好,但ParameterRegistry类在我的代码中未定义。

ParameterRegistry is not a constructor

基本上我想知道CucumberJS社区中是否有人设法让这个工作起来并帮助我开始使用Cucumber Expressions。

1 个答案:

答案 0 :(得分:2)

我找到了办法:

When('I search for {searchTerm:stringInDoubleQuotes}', function (searchTerm)为例。

  1. 它不会使用正则表达式,所以它必须是一个字符串
  2. 参数和参数类型之间不能有空格。
  3. 要制作自己的,请使用addTransform功能。

    一个例子:

    defineSupportCode(function({addTransform}){
    
        addTransform({
            captureGroupRegexps: ['\\d+(?:|\\.\\d{2})'],
            transformer: JSON.parse,
            typeName: 'money'
        });
    });