如何创建 Cucumber 数据表(不是来自步骤),稍后可以使用 .asMaps(String.class, String.class) 转换为列表<Map<String, String>>

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

所以,我有一个使用通过 Cucumber 创建的数据表的方法

Some step description
 | Role | Name |
 | a1   | x1   |

在这个方法中,它将数据表解析为这个

@AND("Some step description")
public void someStep(DataTable dataTable) {
  ...
  List<Map<String, String>> roles = dataTable.asMaps(String.class, String.class)
  ...
}

不幸的是,我需要使用该方法,而不是作为一个步骤,这意味着我需要创建数据表并将其传递到方法中

我尝试通过 DataTable create(List> raw) 创建它,但是如果我以这种方式创建它,则 dataTable.asMaps(String.class, String.class) 会失败并显示

Can't convert DataTable to List<Map<class java.lang.String,class java.lang.String>>. DataTable was created without a converter

有没有一种方法可以在不需要客户转换器的情况下创建数据表? 或者也许是如何创建自己的转换器的示例?

尝试使用 DataTable create(List> raw) 试图找到自定义表格转换器的示例

java cucumber
1个回答
0
投票

Aa,我不确定上一小时这个解决方案的问题是什么,但现在它开始以这种方式工作:

我在某个地方看到你可以创建这个转换器:

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

并在创建表时使用它

List<List<String>> lists = List.of(List.of("key", "value"));
DataTable dataTable = DataTable.create(lists).transpose();

这种方式可以与 dataTable.asMaps(String.class, String.class) 一起使用

我不太确定为什么它最初不能以这种方式工作。我确实尝试过使用和不使用 .transpose()

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