我试图在Spring Bootendpoint上运行一个测试,accepts应该从客户端表单获取信息,将输入字段映射到DTO并将其持久化到DB中,但我无法让测试模式接受它。据我所知,当您有这样定义的控制器endpoint时:
@PostMapping(path = "/newContact")
public @ResponseBody ContactDTO createNewContact(
@ModelAttribute ContactDTO newContact) {
//persists newContact to the data tier
}
@ModelAtort标记会自动在传入的JSON名称中搜索newTouch
DTO的字段名称,然后映射json值以填充DTO的字段。
这是我与班级的联系方式:
public class ContactDTO {
private BigInteger userId;
private BigInteger contactId;
private String name;
private String email;
private String bday;
private String address;
private String city;
private String state;
private List<PhoneDTO> phones;
private MultipartFile contactImgUpload;
//getters and setters
}
首先,这是正确的理解吗?
因此,我试图通过生成预期的DTO,但将其转换为JSON,然后将该JSON发布到控制器endpoint来测试我的endpoint是否工作:
@Autowired
ObjectMapper objectMapper;
@Test
public void saveAnEntryWhenPOSTUserWithMultiplePhones() throws Exception {
List<PhoneDTO> phones = new ArrayList<>();
phones.add(new PhoneDTO("landline", "12312312312"));
phones.add(new PhoneDTO("mobile", "3242523462"));
ContactDTO cDTO = new ContactDTO();
cDTO.setContactId(BigInteger.valueOf(555));
cDTO.setName("Multiphone User");
cDTO.setUserId(BigInteger.valueOf(123));
cDTO.setEmail("test@email.com");
cDTO.setBday("01/01/1987");
cDTO.setState("IL");
cDTO.setCity("Chicago");
cDTO.setAddress("55 Jackson");
cDTO.setPhones(phones);
this.mockMvc.perform(post("/newContact")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(cDTO)))
.andExpect(status().isOk())
.andExpect(content().string(containsString("\"phoneType\":\"landline:\"")));
}
但当我这样做时,它显然没有以预期的方式发送JSON,因为它在尝试保存到数据层时失败了,表示一些预期填充的预期字段(这里的“name”字段)是空的:
org.springframework.web.util.NestedServletException: Request processing failed;
nested exception is javax.validation.ConstraintViolationException:
Validation failed for classes [app.models.relationentities.Contact] during
persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='may not be null',
propertyPath=name, rootBeanClass=class app.models.relationentities.Contact, messageTemplate='{javax.validation.constraints.NotNull.message}'}
]
那么,我的测试错了吗?如何模拟将填写好的表格发送到考试?
编辑包括phoneDTO,这是ContactDTO字段的私人列表
public class PhoneDTO {
private String phoneType;
private String number;
//getters and setters
}
使用flashAttr方法。
this.mockMvc.perform(post("/newContact")
.contentType(APPLICATION_JSON)
.flashAttr("newContact", cDTO))
.andExpect(status().isOk())
...
控制器及其测试中也有不同的URL:newContact和users。
我是Opentelemetry领域的新手,希望将Spring-petclinic仪器数据发送给在我的远程云系统上运行的Jaeger 下面是bat文件: 当我运行bat文件,准备在浏览器(http://localhost:8080)中打开petclinic应用程序时,在控制台中出现以下错误: 如何解决这一问题?是否有其他依赖项要添加到petclinic pom.xml或代码中?
我正在使用 kafka 和 spring boot,我需要将 JSON 对象发送到 kafka,关键是我能够将一个对象作为配置 KafkaTemplate 的 JSON 发送,但仅适用于此对象。 但是如果现在我想发送一个新的DTO对象呢?我是否必须声明一个新的
未能配置Spring Boot进行集成测试。冷你请看一下下面的代码: 实体 存储 库 测试配置 应用程序属性 测试用例 我尝试了不同的配置(其最新版本),但一直出现相同的异常: 更奇怪的是,异常的本质是让spring boot根据实体注释自动生成模式。因此,在插入的时候,spring必须创建表,但是看起来它并没有创建。如果有人给我一个想法,我做错了什么,或者如果有人已经面临这样的问题-请让我知道。
我的问题是关于测试多模块Spring Boot应用程序。 我有一个多模块spring boot REST应用程序。应用程序的结构如下: 以上就是我的应用程序的结构。 SpringBootMainApplication是主要项目。SpringbootModule是SpringBootMainApplication中的子项目。“SpringBootMainApplication.war”WAR将在WA
我有以下课程: 应用和配置类 MyRestController类 我的实用类 当我启动应用程序并将其作为独立jar运行时,或者从IDE(Eclipse)运行时,没有任何问题,一切都按预期进行。 然而,我想写一个单元测试来测试我的MyRestController类。。。我得到了一个NPE,因为自动连接字段util为null(在MyRestController类中)。 这是我的测试课: 我肯定错过了一
const loadLibrary=useCallback(异步()= },[用户信息]; Spring code---@PostMap(value="/api/v1/user")public String createUser(@Request estParam("image")MultipartFile image){System.out.println(image);返回";} -错误--组