Я использую Swagger в Spring для создания API в соответствии со стандартами OpenAPI.
Я пытаюсь создать API с ответом 201 SUCCESS (не по умолчанию 200). Но Swagger по умолчанию включает в себя 200 Response, и мой тестовый случай не проходит.
@ApiResponses(value =
{
@ApiResponse(code = 201, message = "Created"),
@ApiResponse(code = 401, message = "Unauthorized"),
@ApiResponse(code = 403, message = "Forbidden"),
@ApiResponse(code = 404, message = "Not found")
}
)
@PostMapping(consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<...> createEmployee(@RequestBody @Valid EmployeeDTO employeeDTO) {
...
}
Неудачный тест:
@Test
public void testCreate() throws Exception {
String mockJsonData = <mock-json-input>
this.mockMvc.perform(post("<url>")
.content(mockJsonData)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(status().isCreated());
}
Журнал испытаний:
Status expected:<201> but was:<200>
Expected :201
Actual :200
Я также изменился Swagger Docket Bean
@Bean
public Docket emplyeeApi() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
...
Допустимо иметь 200 в Swagger, но мне нужно сделать мой тестовый набор зеленым, чтобы мой контракт API был перспективным.