HTTP Request
MockMvc provides HTTP request handling by default, and Korest Docs includes extension functions for MockMvc related to Spring REST Docs. If you need to validate and perform additional actions after sending a request with MockMvc using andDo(), you can leverage these extension functions.
Below is an example utilizing these extensions:
mockMvc.requestWithDocs(HttpMethod.GET, "/example/{id}", 1) {
header(HttpHeaders.AUTHORIZATION, "Bearer access-token")
param("param1", "value1")
}
.andExpect {
status { isOk() }
}
.andDocument("identifier") {
requestHeader {
header("Authorization", "Access Token", "Bearer access-token")
}
pathParameter {
pathVariable("id", "id", 1)
}
requestParameter {
queryParameter("param1", "parameter 1", "value1")
}
responseField {
field("code", "Response Code", ReturnCode.SUCCESS.code)
field("message", "Response Message", ReturnCode.SUCCESS.message)
field("data", "Response Data", data)
optionalField("data.message", "message", data.message)
field("data.userId", "User Id", data.userId)
}
}
.andDo {
// omitted
}
The following are the key MockMvc extension functions provided by Korest Docs.
Request With HTTP Method
fun MockMvc.requestWithDocs(
method: HttpMethod,
uri: URI,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
fun MockMvc.requestWithDocs(
method: HttpMethod,
urlTemplate: String,
vararg vars: Any?,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
GET
fun MockMvc.getWithDocs(
uri: URI,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
fun MockMvc.getWithDocs(
urlTemplate: String,
vararg vars: Any?,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
POST
fun MockMvc.postWithDocs(
uri: URI,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
fun MockMvc.postWithDocs(
urlTemplate: String,
vararg vars: Any?,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
PUT
fun MockMvc.putWithDocs(
uri: URI,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
fun MockMvc.putWithDocs(
urlTemplate: String,
vararg vars: Any?,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
DELETE
fun MockMvc.deleteWithDocs(
uri: URI,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}
fun MockMvc.deleteWithDocs(
urlTemplate: String,
vararg vars: Any?,
dsl: MockHttpServletRequestDsl.() -> Unit = {},
): ResultActionsDsl {
/* compiled code */
}