当我有两个字符串参数时,如何在 Cucumber 7.3.4 (Gherkin) (dataTable.create()) 中创建/生成数据表

问题描述 投票:0回答:1

这个问题相当笼统。我将在这里进一步解释。 所以我在黄瓜中有这样的步骤: 并期望结果为“status_code”和响应“200” 参数是字符串,稍后用于创建以编程方式创建的两行数据表。

            NOT in this way: |status_code|                                                                     
                             |   200     |

表格是这样创建的:

public DataTable createDataTable(String columnName, String rowName) {
        List<List<String>> dataTableList = new ArrayList<>();
        List<String> columns = Arrays.asList(columnName);
        List<String> rows = Arrays.asList(rowName);
        dataTableList.add(columns);
        dataTableList.add(rows);
        return DataTable.create(dataTableList);
    }

在更新到 7.3.4 之前,这种方法非常有效。但现在我收到多个错误 ,当我尝试使用以这种方式创建的表时。

错误提示:数据表是在没有转换器的情况下创建的。

当我调试代码时,我可以看到 TableConverter 确实是空的。这正是问题所在:我不明白如何填充以编程方式创建的 DataTabble 的转换器部分。 有什么想法吗?

cucumber cucumber-jvm gherkin
1个回答
5
投票

我自己回答我的问题。解决方案相当简单。我只是深入研究代码并找到了解释。 DataTable 本身需要两部分:

  • 要转换和创建的注册表
  • tableConverter类

因此,将这些行添加到代码中并更新以前的函数可以解决问题。这些是行:

private static final DataTableTypeRegistry registry = new DataTableTypeRegistry(Locale.ENGLISH);
private static final DataTable.TableConverter tableConverter = new DataTableTypeRegistryTableConverter(registry);

public DataTable createDataTable(String columnName, String rowName) {
        List<List<String>> dataTableList = new ArrayList<>();
        List<String> columns = Arrays.asList(columnName);
        List<String> rows = Arrays.asList(rowName);
        dataTableList.add(columns);
        dataTableList.add(rows);
        return DataTable.create(dataTableList,tableConverter);
    }

基本上,两行代码和函数中的更新就可以解决问题。 只是不清楚 DataTable 需要哪个转换器。

© www.soinside.com 2019 - 2024. All rights reserved.