我有一张双字段的表格。当我添加一个不是Double('foo')的值时,它应该给我一个
BeanPropertyBindingResult
对那个字段有错误。但是我却得到了
HttpMessageNotReadableException
奇怪的是,从我的JUnit测试中我确实得到了
BeanPropertyBindingResult
这是我的代码(如果需要更多的话,我会提供我认为需要的东西)。
首先是我从角度得到的误差:
2018-05-22 11:28:59.143警告1262---[XNIO-8任务-4]
o、 z.p.spring.web.advice.advicettrait:错误请求:JSON parse
错误:无法从字符串反序列化java.lang.Double类型的值
com.fasterxml.jackson.databind.exc.InvalidFormatException:无法
在[源:
java.io.PushbackInputStream@36d5105f;第1行,第1294列(到
参考链:nl.tibi.sbys.service.dto.ProjectDTO[“旅行费率”])
.m.m.a.ExceptionHandlerExceptionResolver:已解决的异常导致
org.springframework.http.converter.httpMessageTableException:异常
JSON分析错误:无法反序列化java.lang.Double类型的值
来自字符串“dddddd”:不是有效的双精度值;嵌套异常是
从字符串“dddddd”反序列化java.lang.Double类型的值:not
在[Source:java.io.PushbackInputStream@36d5105f;
第1行,第1294列(通过参考链:
当我从junit测试运行代码时,我得到了这个,这是我认为最好的:
2018-05-22 11:32:00.516警告18426---[主要]
o、 z.p.spring.web.advice.advicettrait:错误请求:
org.springframework.validation.BeanPropertyBindingResult:1个错误
字段“travelRate”上的对象“projectDTO”中的字段错误:已拒绝
值[3,5];代码
论据
[org.springframework.context.support.DefaultMessageSourceResolvable:可解析的消息源:
代码[projectDTO.travelRate,travelRate];参数[];默认值
“java.lang.String”类型的值转换为必需的“java.lang.Double”类型
对于属性“travelRate”;嵌套异常为
我的角度代码发送如下:
update( project: Project ): Observable<EntityResponseType> {
const copy = this.convert( project );
return this.http.put<Project>( this.resourceUrl, copy, { observe: 'response' } )
.map(( res: EntityResponseType ) => this.convertResponse( res ) );
}
我的junit测试是:
restMockMvc.perform(post(url()).param("travelRate", "3,5").param("name", "name")).andExpect(status().isUnprocessableEntity());
我的方法(由于错误的十进制值而未达到):
@PostMapping()
@Timed
public ResponseEntity<ProjectDTO> createProject(@Valid ProjectDTO projectDTO) throws URISyntaxException {
log.debug("REST request to save Project : {}", projectDTO);
....
}
我怎样才能得到和JUnit测试相同的结果呢?ie如何获得BeanPropertyBindingResult?