Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用重复的查询参数重新设置问题_Java_Rest_Rest Assured - Fatal编程技术网

Java 使用重复的查询参数重新设置问题

Java 使用重复的查询参数重新设置问题,java,rest,rest-assured,Java,Rest,Rest Assured,使用REST-assuredREST-assured-3.3.0开发自动化测试包。具有一个要测试的端点,该端点具有许多用于驱动其搜索功能的重复查询参数: /count?taskTypes=EAS&taskTypes=MBO&taskTypes=OTHER&taskAges=NEW&taskAges=EXISTING&ageSelection=ALL 请放心在其请求规范中提供了一个参数(Map var1),以传递参数。但是,这使用的映射不能包含重复的键。因

使用REST-assured
REST-assured-3.3.0
开发自动化测试包。具有一个要测试的端点,该端点具有许多用于驱动其搜索功能的重复查询参数:

/count?taskTypes=EAS&taskTypes=MBO&taskTypes=OTHER&taskAges=NEW&taskAges=EXISTING&ageSelection=ALL
请放心在其请求规范中提供了一个
参数(Map var1)
,以传递参数。但是,这使用的映射不能包含重复的键。因此,为了在测试代码中构造查询,我在一个多映射中设置参数和相关值:

import com.google.common.collect.Multimap;


Multimap<String, String> searchParams = ArrayListMultimap.create();
searchParams.put("taskTypes", "EAS");
searchParams.put("taskTypes", "MBO");
searchParams.put("taskTypes", "OTHER");
searchParams.put("taskAges", "NEW");
searchParams.put("taskAges", "EXISTING");
searchParams.put("ageSelection", "ALL");

问题是,REST-assured似乎删除了在
url
参数中传递给它的重复查询参数。有趣的是,请放心提供了以下接口
given()。queryParam(“param”,1,2,3)
检查此处的for循环:

 URIBuilder builder = new URIBuilder();

    for (Map.Entry<String, ?> entry : params.entries()) {
        builder.addParameter(entry.getKey(), entry.getValue().toString());
    }
URIBuilder=新的URIBuilder();
对于(Map.Entry:params.entries()){
builder.addParameter(entry.getKey(),entry.getValue().toString());
}

看起来,尽管对
params
使用了Multimap,但仍以生成器的Map结尾。不管怎样,这里就是您消除重复密钥的地方。

谢谢。我已经打断了
return getRequestSpec()
行,
url=count?ageSelection=ALL&taskTypes=EAS&taskTypes=MBO&taskTypes=OTHER&taskAges=NEW&taskAges=EXISTING
。在这一点之前看起来还不错。
/count?taskTypes=OTHER&taskAges=EXISTING&ageSelection=ALL
 URIBuilder builder = new URIBuilder();

    for (Map.Entry<String, ?> entry : params.entries()) {
        builder.addParameter(entry.getKey(), entry.getValue().toString());
    }