当前位置: 首页 > 知识库问答 >
问题:

保证:如何检查json数组响应的长度?

燕建中
2023-03-14

我有一个返回JSON的endpoint,如下所示:

[
  {"id" : 4, "name" : "Name4"},
  {"id" : 5, "name" : "Name5"}
]

和DTO类:

public class FooDto {
    public int id;
    public String name;
}

现在,我用这种方法测试返回的json数组的长度:

@Test
public void test() {
    FooDto[] foos = RestAssured.get("/foos").as(FooDto[].class);
    assertThat(foos.length, is(2));
}

但是,有没有什么方法可以在不强制转换到FooDto数组的情况下完成它?类似这样:

@Test
public void test() {
    RestAssured.get("/foos").then().assertThat()
      .length(2);
}

共有3个答案

商柏
2023-03-14

有很多方法。我解决了以下问题

@Test
public void test() {
 ValidatableResponse response = given().when().get("/foos").then();
 response.statusCode(200);
 assertThat(response.extract().jsonPath().getList("$").size(), equalTo(2));
}

使用重新假定的3.0.0

姜钊
2023-03-14

您可以简单地在身体路径中调用大小():

比如:

given()
            .accept(ContentType.JSON)
            .contentType(ContentType.JSON)
            .auth().principal(createPrincipal())
            .when()
            .get("/api/foo")
            .then()
            .statusCode(OK.value())
            .body("bar.size()", is(10))
            .body("dar.size()", is(10));
马臻
2023-03-14

解决!我以这种方式解决了它:

@Test
public void test() {
    RestAssured.get("/foos").then().assertThat()
      .body("size()", is(2));
}
 类似资料:
  • 问题内容: 我的控制器中有以下代码: 在我的RSpec控制器测试中,我想验证某个场景确实收到了成功的json响应,因此我有以下内容: 尽管在运行测试时出现以下错误: 我是否检查响应不正确? 问题答案: 您可以检查响应对象并验证它是否包含期望值: 编辑 将此更改为a 会比较麻烦。这是一种处理方法: 请注意,它不会响应,因此需要一个或真实的模型实例。

  • 我有一个放心的回复,其中包含以下正文: 我想验证嵌套在2个数组中的状态“已接受”和原因“已通过验证”。我尝试将原因存储为列表,在此示例中进行了概述,但我收到以下错误: 代码: 有没有办法做到:

  • 这是我在控制器中的方法,由 我希望作为我的json。 这是我的JUnit测试: 以下是控制台输出: 甚至是是一个空字符串。 有人能建议如何在我的JUnit测试方法中获取JSON,这样我就可以完成我的测试用例了。

  • 在使用空手道框架进行API测试时,我在验证嵌套JSON响应时遇到了一些问题。 JSON响应: null def feed_cycle={item_type:'#string',title:'#string'} def feed_college_dept_branch={branch:'#string'} def feed_college={item_type:'#string',dept:'[]f

  • //Json响应 我想验证名称是否为REST,然后描述是否为表示状态传输,如果名称为SOAP,然后描述是否为简单对象访问协议。有超过20条类似的响应记录,我如何使用通用参数放心地完成它。

  • 问题内容: 这是我的控制器内部的方法,其注释为 我期望作为我的json。 这是我的JUnit测试: 这是控制台输出: Even 是一个空字符串。 有人可以建议如何在我的JUnit测试方法中获取JSON,以便完成测试用例。 问题答案: 我使用TestNG进行单元测试。但是在Spring Test Framework中,它们看起来都很相似。所以我相信你的测试如下 如果要检查json键和值,可以使用js