RestAssured - 将列表作为 QueryParam 传递
RestAssured - passing list as QueryParam
我有一个 REST 服务,它接受许多查询参数,其中包括一个字符串列表。我使用 RestAssured 来测试这个 REST 服务,但是我在将列表传递给服务时遇到了一些问题。
我的 REST 服务:
@GET
@Consumes(Mediatyper.JSON_UTF8)
@Produces(Mediatyper.JSON_UTF8)
public AggregerteDataDTO doSearch(@QueryParam("param1") final String param1,
@QueryParam("param2") final String param2,
@QueryParam("list") final List<String> list) {
我的 RestAssured 测试:
public void someTest() {
final String url = BASE_URL + "/search?param1=2014¶m2=something&list=item1&list=item2";
final String json = given()
.expect()
.statusCode(200)
.when()
.get(url)
.asString();
当我打印 url 时,它看起来像这样:
http://localhost:9191/application/rest/search?param1=2014¶m2=something&list=item1&list=item2
当我在浏览器中尝试 url 时,REST 服务正确地获取了一个包含 2 个元素的列表。但是,当 运行 通过我的 RestAssured 测试时,只有后者的参数被注意到,给我一个包含 1 个元素的列表(包含 "item2")。
您应该将 REST Assured 升级到最新版本,因为我认为这是旧版本中的错误。您还可以像这样指定参数:
final String json =
given().
param("param1", 2014).
param("param2", "something").
param("list", "item1", "item2").
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
您也可以试试下面的方法
RequestSpecification requestSpecifications = RestAssured.given();
//r.parameters()
Map<String , Object > map = new HashMap<String,Object>();
map.put("param1", 2014);
map.put("param2", "something");
List<String> paramList = new ArrayList<String>();
map.put("list",paramList );
final String json = requestSpecifications.parameters(map).
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
我有一个 REST 服务,它接受许多查询参数,其中包括一个字符串列表。我使用 RestAssured 来测试这个 REST 服务,但是我在将列表传递给服务时遇到了一些问题。
我的 REST 服务:
@GET
@Consumes(Mediatyper.JSON_UTF8)
@Produces(Mediatyper.JSON_UTF8)
public AggregerteDataDTO doSearch(@QueryParam("param1") final String param1,
@QueryParam("param2") final String param2,
@QueryParam("list") final List<String> list) {
我的 RestAssured 测试:
public void someTest() {
final String url = BASE_URL + "/search?param1=2014¶m2=something&list=item1&list=item2";
final String json = given()
.expect()
.statusCode(200)
.when()
.get(url)
.asString();
当我打印 url 时,它看起来像这样:
http://localhost:9191/application/rest/search?param1=2014¶m2=something&list=item1&list=item2
当我在浏览器中尝试 url 时,REST 服务正确地获取了一个包含 2 个元素的列表。但是,当 运行 通过我的 RestAssured 测试时,只有后者的参数被注意到,给我一个包含 1 个元素的列表(包含 "item2")。
您应该将 REST Assured 升级到最新版本,因为我认为这是旧版本中的错误。您还可以像这样指定参数:
final String json =
given().
param("param1", 2014).
param("param2", "something").
param("list", "item1", "item2").
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();
您也可以试试下面的方法
RequestSpecification requestSpecifications = RestAssured.given();
//r.parameters()
Map<String , Object > map = new HashMap<String,Object>();
map.put("param1", 2014);
map.put("param2", "something");
List<String> paramList = new ArrayList<String>();
map.put("list",paramList );
final String json = requestSpecifications.parameters(map).
when().
get("/search").
then().
statusCode(200).
extract().
body().asString();