2017-02-24 31 views
1

背景与CucumberJS 2.0.0+

我想我最好弄清楚CucumberJS 2.0.0黄瓜表情,颇有几分自1.3.0改变。

黄瓜表达式可以在步骤的定义可以用来代替正则表达式:

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

相反的:

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

我们想使用,似乎是CJS2的一部分黄瓜表达式,使我们的步骤定义更具可读性(在某些地方,我们有相当多的正则表达式会阻止初学者),我们无法弄清楚如何去做。

的问题

参照documentation黄瓜表达式,一切似乎罚款,但ParameterRegistry类是我的代码中不明确的。

ParameterRegistry is not a constructor

基本上,如果有人在CucumberJS社会设法得到这个工作,并会帮助我开始使用黄瓜表达式我不知道。

回答

2

我找到了一种方法来做到这一点:

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

  1. 它不会需要一个正则表达式,所以它必须是一个字符串
  2. 你不能有参数,参数类型之间的空间。

要自己创建,请使用addTransform函数。

一个例子:

defineSupportCode(function({addTransform}){ 

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

对于任何人谁怀疑, “addTransform” 似乎已更名为 “defineParameterType”,参见[从今年8更新日志](https://github.com/cucumber/cucumber -js/blob/052cd2069ad61003974d626406655e8452e27e34/CHANGELOG.md#300-2017-08-08)。 –