0
restAssured를 사용하여 응용 프로그램에서 rest 서비스를 테스트합니다. 응용 프로그램은 Json 형식을받습니다. 나머지 서비스를 호출하기 전에 RestAssured는 toString 메소드를 사용하여 bean 클래스의 필드 (ENUM)를 deserialize하여 응답을 얻어야합니다. restAssured 만 requestBody을 보내Restarted에서 Json을 직렬화로 구성
public enum Condition {
SUCCESS("success"),
FAILURE("failure");
private String condition;
private Condition(String condition) {
this.condition = condition;
}
@Override
public String toString() {
return this.condition;
}
}
public class Order {
private String order_id;
private Condition status;
//Getters and Setters
}
import static com.jayway.restassured.RestAssured.given;
import static com.jayway.restassured.RestAssured.preemptive;
import static org.assertj.core.api.Assertions.assertThat;
import static com.jayway.restassured.config.RestAssuredConfig.config;
import static com.jayway.restassured.config.ObjectMapperConfig.objectMapperConfig;
public class RestTests {
//.....//
private static RequestSpecification spec;
public static final Order inputOrderInvalid =
new Order.Builder()
.setOrderId("213424")
.setCondition(Condition.SUCCESS)
.build();
@BeforeClass
public static void initSpec(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, false);
RestAssuredConfig config = config().objectMapperConfig(objectMapperConfig().jackson2ObjectMapperFactory((cls, charset) -> objectMapper));
spec = new RequestSpecBuilder()
.setConfig(config)
.setContentType(ContentType.JSON)
.setBaseUri(ENDPOINT_URI)
.addFilter(new ResponseLoggingFilter())//log request and response for better debugging. You can also only log if a requests fails.
.addFilter(new RequestLoggingFilter())
.build();
}
@Test
public void orderInvalid(){
JsonPath error = given()
.spec(spec)
.body(inputOrderInvalid)
.when()
.post(SERVICE)
.then()
.statusCode(HttpStatus.SC_BAD_REQUEST)
.extract()
.jsonPath();
assertThat(error.getString("code")).isEqualTo("INCORRECT_VALUE");
}
//.....//
}
: 것 같다
{
"order_id" : "12312546",
"condition" : "SUCCESS"
}
ObjectMapper에 살고 있고 구성이 무시 된 코드에 따라 . (DeserializationFeature.READ_ENUMS_USING_TO_STRING).
누구든지 나를 도울 수 있습니까?
objectMapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
에 : 내 목표는 내가 직렬화 기능을 변경해야합니다 toString을 사용하여 직렬화하는 것이었다으로