我目前有一些代码需要一些重试逻辑。由于一些远程请求和数据库更新可能需要一些时间。我不想为此添加特定的等待。我想重试,直到它与我的特定响应相匹配。目前它正在使用等待,它将重试直到匹配特定字段。
private static RequestSpecification REQUEST_SPEC(String baseUri) {
return new RequestSpecBuilder()
.setBaseUri(baseUri)
.setBasePath(DEFAULT_PATH)
.setAccept(ContentType.JSON)
.setContentType(ContentType.JSON)
.setConfig(config().logConfig(logConfig().enableLoggingOfRequestAndResponseIfValidationFails()))
.build();
}
private static ResponseSpecBuilder PROFILE_RESPONSE() {
return new ResponseSpecBuilder()
.expectStatusCode(HTTP_OK)
.expectBody("profileId", equalTo(PROFILE_ID))
.expectBody("userKey", notNullValue());
}
await().timeout(10, SECONDS).untilAsserted(() -> assertThat("Profile not yet updated",
given()
.spec(REQUEST_SPEC)
.pathParam("somePathParam", "somePathParamValue")
.auth().oauth2("someAccessToken")
.when()
.get("/someRequestPath")
.then()
.spec(PROFILE_RESPONSE)
.extract()
.body().jsonPath().getString("profileId"), equalTo("updatedProfileId")));
我将内置的 RestAssured 机制(可重用的 ResponseSpecifications)和等待性与 hamcrest 匹配器相结合。有没有办法重试 RestAssured ValidatableResponse 而不是提取它并使用 hamcrest assertThat() 匹配器对其进行验证?