Добавление и проверка 201 ответа на Swagger - PullRequest
0 голосов
/ 17 апреля 2020

Я использую 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 был перспективным.

...