java - restMockMvc - 预期:一个包含 <1.0F> 的集合,但:是 <1.0>
问题描述
在休息端点上运行测试时遇到问题:
java.lang.AssertionError:JSON 路径“$.[*].montant”
预期:包含 <1.0F> 的集合,但:是 <1.0>
预期:包含 <1.0F> 的集合实际:<1.0>
代码是:
restMockMvc.perform(get("/api/{id}", dommage.getId()))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
.andExpect(jsonPath("$.[*].montant").value(hasItem(dommage.getMontant())));
测试失败,因为值不匹配,但是如何格式化 json 结果以匹配 Float 或测试与当前输出匹配?
谢谢你的帮助
解决方案
好的,我终于找到了如何处理这个问题。
在测试之前,我将默认的 JsonProvider 从 JsonSmartJsonProvider(默认)修改为 JacksonJsonProvider。
我在测试初始化期间使用这段代码完成了它:
Configuration.setDefaults(new Configuration.Defaults() {
private final JsonProvider jsonProvider = new JacksonJsonProvider();
private final MappingProvider mappingProvider = new JacksonMappingProvider();
@Override
public JsonProvider jsonProvider() {
return jsonProvider;
}
@Override
public MappingProvider mappingProvider() {
return mappingProvider;
}
@Override
public Set<Option> options() {
return EnumSet.noneOf(Option.class);
}
});
除此之外,我像这样修改了我的测试:
.andExpect(jsonPath("$.[*].montant", Float.class).value(hasItem(dommage.getMontant().doubleValue())));
我使用了 double 值,因为预期值为 1.0F,而 json 结果为 1.0。
推荐阅读
- python - 找不到模块“...Python38\lib\site-packages\lightgbm\lib_lightgbm.dll”
- r - 为什么 adabag 中的预测误差是离散的?
- javascript - GoogleAppsScript 的字符串解析器
- ruby - rbenv 在 tmux 中没有得到正确的版本
- c++ - 将 String 转换为 Epoch 一遍又一遍地返回常量值
- python - 为什么主窗体中的创建按钮不起作用?
- python - Django 模型 - 一对多或多对多
- node.js - 如何同时使用后端和前端的文件?
- activemq - 使用 amqp 协议模拟 Apache ActiveMq
- java - 无法部署 java firebase 功能 - 我做错了什么?