gpt4 book ai didi

java - 安心 : How to make the abstract layer for the type of endpoint call

转载 作者:行者123 更新时间:2023-11-30 06:25:28 25 4
gpt4 key购买 nike

这是我对 GET 端点的restAssure 调用:

public static Response getCall(int expectedStatusCode){
return given()
.port(PORT)
.contentType(ContentType.JSON)
.when()
.log().all()
.get(getEndpoint)
.then()
.log().all()
.assertThat()
.statusCode(expectedStatusCode).extract().response();
}

下面是对 POST 端点的调用:

public static Response postEndpoint(Request request, int expectedStatusCode) {
return given()
.port(PORT)
.contentType(ContentType.JSON)
.body(request)
.when()
.log().all()
.post(postEndpointURI)
.then()
.log().all()
.assertThat()
.statusCode(expectedStatusCode).extract().response();
}

可见,代码是多余的,唯一的区别是调用类型,POST 和 GET。

如何使代码抽象并让调用不同?

最佳答案

希望它对您的冗余问题有所帮助。您可能会从这里获得更多改进重构的想法。

private static final int PORT = 1922;
private static String getEndpoint;
private static String postEndpointURI;

/**
* First part of the building up the request
*/
private static RequestSpecification buildRequest() {
return given()
.port(PORT)
.contentType(ContentType.JSON)
.when()
.log().all();
}

/**
* Relevant part of the GET request
*/
private static Response buildGetRequest() {
return buildRequest().get(getEndpoint);
}

/**
* Relevant part of the POST request
*/
private static Response buildPostRequest(Request request) {
return buildRequest().body(request).post(postEndpointURI);
}

/**
* Last bit redundant that was called by both calls
*/
private static Response extractResponse(Response response, int expectedStatusCode) {
return response.then()
.log().all()
.assertThat()
.statusCode(expectedStatusCode).extract().response();
}


/**
* Your main GET method
*/
public static Response assertThatGetResponseStatusIs(int expectedStatusCode) {
return extractResponse(buildGetRequest(), expectedStatusCode);
}

/**
* Your main POST method
*/
public static Response assertThatPostResponseStatusIs(Request request, int expectedStatusCode) {
return extractResponse(buildPostRequest(request), expectedStatusCode);
}

public static void main(String[] args) {
System.out.println(assertThatGetResponseStatusIs(500));
System.out.println(assertThatPostResponseStatusIs(request, 400));
}

关于java - 安心 : How to make the abstract layer for the type of endpoint call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com