이번에는 REST-Assured
의 기능중의 하나인, SpecBuilder
에 대해 알아보겠습니다.
SpecBuilder
는 다시 RequestSpecBuilder
와 ResponseSpecBuilder
로 나뉩니다.
테스트의 경우에 따라서는 공통의 pathParameter / queryParameter 혹은 header를 계속해서 선언해줘야할 경우가 있습니다.
이럴때 SpecBuilder
를 사용하면, 반복된 선언을 줄일 수 있게 됩니다.
RequestSpecification req = new RequestSpecBuilder().setBaseUri("https://www.google.com")
.addQueryParam("key", "test123")
.setContentType(ContentType.JSON)
.build();
req.log().all().spec(req).body(testPayload());
spec()
메소드에, 미리 선언해놓은 RequestSpecification
의 객체를 전달해줍니다. 이것으로 request 시의 일종의 spec(사양) 을 계속해서 재활용할 수 있게 됩니다.
request와 마찬가지로 response도 specbuilder를 사용할 수 있습니다.
ResponseSpecification res = new ResponseSpecBuilder().expectStatusCode(200)
.expectContentType(ContentType.JSON)
.build();
이렇게 하면 response 검증 시에 json
format이라는 것과, statuscode
가 200으로 올 것이라는 예상을 재활용해볼 수 있습니다.
req.log().all().spec(req).body(testPayload());
String response = req.when().post("{END_POINT}")
.then().log().all()
.assertThat().spec(res).extract().response().asString();
when()
으로 실제 request를 발생시켜준 후, then()
으로 response를 받아냅니다.
assertThat()
이후에 예상되는 결과에 대해, spec()
으로 ResponseSpecification
객체를 전달해줍니다.