黄瓜stepdef匹配多个正则表达式参数

时间:2017-10-20 03:20:02

标签: gherkin cucumber-junit

我正在尝试编写一个步骤def,它使用双引号匹配多个String值:

When I have a HeaderUtil
Then header is generated with fields matching patterns 
"""
"\"%s\":\"%s\""
""" 
or
"""
"\"%s\":%s"
"""

此stepdef将看到序列化字段与生成的字符串中的上述模式之一匹配。

我希望有一个stepdefinition,它将有两个与一个或另一个模式匹配的参数。 目前,我收到一个解析器错误:

Caused by: gherkin.lexer.LexingError: Lexing error on line 8: '""" \
"""
"\"%s\":%s"
"""   

是否可以在步骤定义中传递多个多线参数?

1 个答案:

答案 0 :(得分:0)

我想它引用了Cucumber DocumentationCustom parameter types

这个主题

自定义参数类型

您可以定义自定义参数类型以表示您自己域中的类型。这样做有以下好处: 自动转换为自定义类型 记录并发展您无处不在的领域语言 强制执行某些模式 想象一下,我们希望参数匹配颜色红色蓝色黄色(但没有别的)。让我们假设已经定义了Color类。这就是我们定义自定义颜色参数类型的方法:

parameterTypeRegistry.defineParameterType(new ParameterType<>(
    "color",                                  // name
    "red|blue|yellow",                        // regexp
    Color.class,                              // type
    new SingleTransformer<>(new Function<String, Color>() {
        @Override
        public Color apply(String s) {
            return new Color(s);
        }
    }), // transform
    false,                                    // useForSnippets
    false                                     // preferForRegexpMatch));