标签: rest-assured

java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为com.testing.models.Account

我收到以下错误:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account
Run Code Online (Sandbox Code Playgroud)

使用以下代码

final int expectedId = 1;

Test newTest = create();

int expectedResponseCode = Response.SC_OK;

ArrayList<Account> account = given().when().expect().statusCode(expectedResponseCode)
    .get("accounts/" + newTest.id() + "/users")
    .as(ArrayList.class);
assertThat(account.get(0).getId()).isEqualTo(expectedId);
Run Code Online (Sandbox Code Playgroud)

有什么理由不能做到get(0)吗?

java jackson rest-assured

61
推荐指数
4
解决办法
11万
查看次数

放心.是否有可能从请求json中提取值?

我这样得到回应:

Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();
Run Code Online (Sandbox Code Playgroud)

我在responseBody中有一个json:

{"user_id":39}
Run Code Online (Sandbox Code Playgroud)

我可以使用rest-assured的方法提取到字符串只有这个值= 39?

java rest json rest-assured

46
推荐指数
4
解决办法
9万
查看次数

REST Assured - 通用列表反序列化

假设我有一个Java Person类:

class Person {
    String name;
    String email;
}
Run Code Online (Sandbox Code Playgroud)

使用REST Assured,您可以反序列化此JSON对象

{"name":"Bob", "email":"bob@email.com"} 
Run Code Online (Sandbox Code Playgroud)

使用的Java Person实例

Person bob = given().when().get("person/Bob/").as(Person.class);
Run Code Online (Sandbox Code Playgroud)

如何使用REST Assured反序列化此JSON数组

[{"name":"Bob", "email":"bob@email.com"}, 
 {"name":"Alice", "email":"alice@email.com"}, 
 {"name":"Jay", "email":"jay@email.com"}]
Run Code Online (Sandbox Code Playgroud)

变成了List<Person>?例如,这将是方便的:

List<Person> persons = given().when().get("person/").as(...);
Run Code Online (Sandbox Code Playgroud)

java arrays json deserialization rest-assured

43
推荐指数
6
解决办法
2万
查看次数

通过RestAssured中的JsonPath访问匿名数组的元素

我从一个服务返回的JSON中有一个匿名数组,如:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]
Run Code Online (Sandbox Code Playgroud)

我如何访问bar元素,例如

expect().body("$[*].bar", hasItems(2,4)) 
Run Code Online (Sandbox Code Playgroud)

我尝试了一些我在这里找到的可能性以及StefanGössnerJsonPath页面上的一些可能性,但无论我尝试什么,我都会遇到异常.我的问题似乎直接来自试图访问该项目列表.

json rest-assured rest-assured-jsonpath

27
推荐指数
2
解决办法
2万
查看次数

Rest Assured - 将响应JSON反序列化为List <POJO>

我有一个POJO Artwork.我正在List以JSON格式从HTTP响应主体中的RESTful Web服务中检索这些对象中的一个.我正在尝试编写一个基于Rest Assured的测试来分析返回的列表.代码如下所示:

Response response = get("/artwork");
List returnedArtworks = response.getBody().as(List.class)
Run Code Online (Sandbox Code Playgroud)

问题是,我无法让Rest Assured将返回的JSON解析为List<Artwork>.相反,我得到了一个List<LinkedHashMap>.地图有一个合适的结构,即可以由Jackson映射到Artwork对象,但我想避免手动映射它.

我的模型中的JSON映射是可以的,因为当我像这样映射单个对象时:

Artwork returnedArtwork = response.getBody().as(Artwork.class);
Run Code Online (Sandbox Code Playgroud)

它工作正常.

是否有可能returnedArtworks成为List<Artwork>

java generics json rest-assured

20
推荐指数
3
解决办法
3万
查看次数

在REST Assured中,如何检查响应中是否存在字段?

我怎样才能确保我的响应(包括它是JSON)包含不包含特定字段?

when()
    .get("/person/12345")
.then()
    .body("surname", isPresent()) // Doesn't work...
    .body("age", isNotPresent()); // ...But that's the idea.
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来断言我的JSON是否包含字段agesurname.

java rest rest-assured

19
推荐指数
2
解决办法
2万
查看次数

用于测试RESTful Web服务的工具

我正在尝试评估正确的工具来测试RESTful Web服务,并最终为我们的项目自动化.想知道,当我比较互联网上的各种工具时,我需要寻找这种测试的规格是什么.

当然,其中一个要求是开源工具.

我查看了一些工具,例如SOAPUI,RestClient,TestMaker,RestAssured.想知道他们的利弊.此外,任何有关如何实现它的想法或指示都会有很大帮助.

rest web-services soapui rest-client rest-assured

18
推荐指数
3
解决办法
4万
查看次数

用restAssured测试spring boot rest应用程序

我一直在努力解决这个问题.我想使用restAssured来测试我的SpringBoot REST应用程序.

虽然看起来容器旋转得恰到好处,但请放心(其他任何事情似乎都有问题.

我一直得到Connection拒绝例外.

java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
...
Run Code Online (Sandbox Code Playgroud)

我的考试班:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SizesRestControllerIT {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void test() {
        System.out.println(this.restTemplate.getForEntity("/clothes", List.class));
    }

    @Test
    public void test2() throws InterruptedException {
        given().basePath("/clothes").when().get("").then().statusCode(200);
    }

}
Run Code Online (Sandbox Code Playgroud)

现在对于奇怪的部分,test传递和打印它应该test2是什么,但是得到Connection拒绝例外.

任何想法这个设置有什么问题?

java rest spring rest-assured spring-boot

18
推荐指数
2
解决办法
1万
查看次数

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

我有一个返回JSON的端点,如:

[
  {"id" : 4, "name" : "Name4"},
  {"id" : 5, "name" : "Name5"}
]
Run Code Online (Sandbox Code Playgroud)

和DTO课程:

public class FooDto {
    public int id;
    public String name;
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在以这种方式测试返回的json数组的长度:

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

但是,有没有办法在没有强制转换为FooDto数组的情况下执行此操作?像这样的东西:

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

json rest-assured

17
推荐指数
5
解决办法
2万
查看次数

在REST Assured中,如何设置超时?

我正在使用RestAssured 2.8.0并且我正在尝试设置自己的超时(对于网关超时),所以如果我在X毫秒后没有得到响应我想要中止.

我试过了:

public static ValidatableResponse postWithConnectionConfig(String url, String body, RequestSpecification requestSpecification, ResponseSpecification responseSpecification) {
    ConnectionConfig.CloseIdleConnectionConfig closeIdleConnectionConfig = new ConnectionConfig.CloseIdleConnectionConfig(1L, TimeUnit.MILLISECONDS);
    ConnectionConfig connectionConfig = new ConnectionConfig(closeIdleConnectionConfig);
    RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);


    return given().specification(requestSpecification)
            .body(body)
            .config(restAssuredConfig)
            .post(url)
            .then()
            .specification(responseSpecification);

}
Run Code Online (Sandbox Code Playgroud)

要么

ConnectionConfig connectionConfig = new ConnectionConfig()
            .closeIdleConnectionsAfterEachResponseAfter(10L, TimeUnit.MILLISECONDS);
RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);
Run Code Online (Sandbox Code Playgroud)

我也尝试添加

.queryParam("SO_TIMEOUT", 10)
Run Code Online (Sandbox Code Playgroud)

要么

.queryParam("CONNECTION_MANAGER_TIMEOUT", 10)
Run Code Online (Sandbox Code Playgroud)

似乎没什么用.它不会中止我的查询

httpclient java-8 rest-assured

16
推荐指数
3
解决办法
8137
查看次数