Spring Boot MockMvc返回错误的状态代码

时间:2018-06-20 11:34:44

标签: java spring mockmvc

我正在测试一个具有Site cells Azimut technology npv scpci final value T30264 G30264B 130 UMTS900 343 276 276 T30992 G30992A 10 UMTS900 171 12 171 T30992 G30992B 260 UMTS900 173 13 173 T30992 U30992A 10 UMTS2100 171 12 171 T30992 U30992B 260 UMTS2100 173 13 173 T31520 G31520A 0 UMTS900 72 500 72 T31520 G31520B 120 UMTS900 73 501 73 T31520 G31520C 220 UMTS900 74 502 74 T31548 G31548A 30 UMTS900 93 450 93 T31548 G31548B 130 UMTS900 94 451 94 T31548 G31548C 250 UMTS900 95 452 95 T31548 U31548N 30 UMTS2100 94 450 450 T31548 U31548O 130 UMTS2100 95 451 451 T31548 U31548P 250 UMTS2100 96 452 452 之类的API端点的@RestController。如果发布到此端点的对象(JSON格式)缺少其元数据的某些部分,则API应以错误请求的Http状态(400)进行响应。

通过Postman测试它时,此方法有效,但是在我模拟控制器的单元测试中,它仍然返回状态200。

/api/dataobject中的方法:

RestController

@RequestMapping("/api/dataobject") public ResponseEntity postDataObject(@RequestBody final DataObject dataObject) throws InvalidObjectException { if (!dataObjectValidator.validateDataObject(dataObject)) { throw new InvalidObjectException("Data object was invalid: " + dataObject.toString()); } return new ResponseEntity(HttpStatus.OK); } 被用InvalidObjectException注释的类捕获,该类扩展了@ControllerAdvice并按以下方式处理:

ResponseEntityExceptionHandler

现在,单元测试类如下:

@ExceptionHandler(value = InvalidObjectException.class)
    protected ResponseEntity<Object> handleInvalidObject(final InvalidObjectException exception, final WebRequest request) {
        final String bodyOfResponse = exception.getMessage();

        return handleExceptionInternal(exception, bodyOfResponse, new HttpHeaders(), HttpStatus.BAD_REQUEST, request);
    }

即使对象无效,并且我已经说过给定的对象将返回HttpStatus 400,但我却得到200状态。

很明显,我在这里错过了什么,但是呢?

0 个答案:

没有答案