0
私はrestAssuredを使用して、アプリケーションでレストサービスをテストします。アプリケーションはJson形式を受け取ります。 RestAssuredは、Restサービスを呼び出す前に、ToStringメソッドを使用してBeanクラスのフィールド(ENUM)を非直列化してレスポンスを達成する必要があります。 restAssuredだけrequestBodyを送信RestAssuredで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にsetted設定が無視されたコードを実行します 。 (DeserializationFeature.READ_ENUMS_USING_TO_STRING)。
誰でも手伝ってもらえますか?