我遇到以下错误:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account
使用以下代码
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);
我不能做 get(0)
有什么原因吗?
原文由 Passionate Engineer 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题来自杰克逊。当它没有关于反序列化到哪个类的足够信息时,它使用
LinkedHashMap
。由于您没有告知 Jackson 您的
ArrayList
的元素类型,它不知道您要反序列化为ArrayList
的Account
s所以它回落到默认值。相反,您可能会使用
as(JsonNode.class)
,然后以比 rest-assured 允许的更丰富的方式处理ObjectMapper
。是这样的: