我有一个带有 RestAssured 的测试自动化宠物项目,我想让它在架构上开发,以便使代码可重用,测试脚本易于阅读。我有表示API的请求和响应的类,我也有DTO类。例如,下面是一个与终结点一起使用的类:
public class BreedsEndpoint extends EndpointTechnicalSteps{
public BreedsEndpoint(){
super();
}
public BreedsEndpoint search(RequestSpecification spec, String nameOfBreed) {
Response response = given().spec(spec)
.param("q", nameOfBreed)
.when()
.get("breeds/search/")
.thenReturn();
this.response = response;
return this;
}
}
如您所见,有一个父类< code > EndpointTechnicalSteps ,我想用它来处理来自endpoint的响应。例如,我想在< code > endpoint technical steps 中创建一个方法,该方法将从响应中返回一个对象列表,这里有一个问题。RestAssured的最新版本仅支持这样的决定
Object[] objectArray = response.getBody().as(Object[].class);
我必须将对象[].class
作为参数传递。
这是Endpoint TechnicalSteps
类的代码
public class EndpointTechnicalSteps {
protected Response response;
public <T> T getBodyAsList(Class<T> aClass) {
return response.getBody().as(aClass);
}
}
例如,如果我使用Breed[]. class
参数调用getBodyAsList
方法,那么我得到数组Breed[]breeds
如何在EndpointTechnicalSteps中生成将返回的方法
我找到的最好的版本如下。列表的泛型类型会自动从返回类型推断出来。
private static List<LedgerAccountDto> getAllLedgerAccount() {
return given()
.when().get("/wallet/ledger_accounts/")
.then()
.statusCode(200)
.extract().as(new TypeRef<>() {});
}
在InteliJ或SonarLint中没有错误或警告,所以这似乎是最好的解决方案。
它也很适合模板方法
private static <T> List<T> getAllLedgerAccount() {
return given()
.when().get("/wallet/ledger_accounts/")
.then()
.statusCode(200)
.extract().as(new TypeRef<>() {});
}
用这种方式
List<LedgerAccountDto> fetchedAccounts = getAllLedgerAccount();
这次也没有警告或错误,因为泛型类型是由java自动计算的。
kmcakmak指出了解决方案。这里有一个代码:
public <T> List<T> getBodyAsListOf(Class<T> aClass) {
JsonPath jsonPath = response.getBody().jsonPath();
return jsonPath.getList("", aClass);
}
我有一个sql select查询,它只从数据库中检索单个列(组)(即),我在对象数组列表中接收上面列表的结果 , 理想情况下,结果应该包含一个对象数组列表,但是当我检查时,结果的第0个索引包含String object而不是object数组。 但是,如果我使用多个列(假设在查询的select子句中有2个列),我可以看到结果的第0个索引作为对象数组,即 即使查询的select子句中只提到一列,如何获
我有一个方法,它应该从JSON返回不同的对象,这取决于参数中的类类型。我试着根据参数返回一个对象列表,但是我只把LinkedHashMap放入ArrayList。 我搜索了很多,但是在解决方案中,类类型的所有地方都是硬编码的。 有没有一种不用硬代码就能解决这个问题的方法? 我只想传递类类型并通过一个方法获取对象。 当我的对象有关系时,我得到这个例外 无法识别的字段"字段"(类model.orm.部
问题内容: 只是试图在视图中显示我通过ajax从控制器获取的数组,但它显示的是[object Object],[object Object]而不是array。请在下面检查我的js文件: 问题答案: 使用转换到。 试试这个: 我认为,这对您有帮助-
问题内容: 我想做的是从而不是从Volley库中使用一些数据。 以下是用于从服务器中获取JSON对象的代码。 我试图改变到后改为。但这并没有解决。 问题答案: 中的url 不是可选的,并且JSONObject参数用于将带有请求的参数发布到url。 从文档中:http : //afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest
问题内容: 简短的问题: 如果我有可以继承FactoryBean接口的类,那么如何从FactoryBean对象本身而不是FactoryBean.getObject()获得数据? 长问题: 我必须使用基于第三方Spring的库,而该库几乎不使用FactoryBean接口。现在,我总是必须配置2个bean: 实际上,名称为“ XYZ”(与“ XYZ2”比较)的bean的定义永远不会更改,但是由于工厂性