我正在测试一个具有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状态。
很明显,我在这里错过了什么,但是呢?