RestAssured - 将列表作为QueryParam传递

时间:2015-07-08 12:54:47

标签: java rest jersey rest-assured

我有一个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&param2=something&list=item1&list=item2";

    final String json = given()
            .expect()
            .statusCode(200)
            .when()
            .get(url)
            .asString();

当我打印网址时,它看起来像这样:

http://localhost:9191/application/rest/search?param1=2014&param2=something&list=item1&list=item2

当我在浏览器中尝试此URL时,REST服务正确获取包含2个元素的列表。但是,当通过我的RestAssured-test运行时,只会注意到后者的params,给我一个1元素的列表(包含“item2”)。

2 个答案:

答案 0 :(得分:10)

您应该将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();  

答案 1 :(得分:1)

您也可以尝试以下方法

pylint