java - MockMvc - 使用复杂对象调用查询

标签 java spring rest spring-mvc spring-boot

我想向 Controller 发送一个由文件和简单类型组成的复杂对象。

public class ContributionNew<T extends MovieInfoDTO> {
    private List<T> elementsToAdd;
    private Map<Long, T> elementsToUpdate;
    private Set<Long> idsToDelete;
    private Set<String> sources;
    private String comment;
}

public class Photo extends MovieInfoDTO {
    private MultipartFile photo;
}

@PostMapping(value = "/{id}/contributions/photos")
@ResponseStatus(HttpStatus.CREATED)
public
ResponseEntity<Void> createPhotoContribution(
        @ApiParam(value = "The movie ID", required = true)
        @PathVariable("id") final Long id,
        @ApiParam(value = "The contribution", required = true)
        @RequestBody @Valid final ContributionNew<Photo> contribution
) {

我想创建一个测试来发送对象,但我不知道如何完成它。

@Test
public void testCreatePhotoContribution() throws Exception {
    ContributionNew<Photo> contribution = new ContributionNew<>();
    MockMultipartFile multipartFile = new MockMultipartFile("photo", "C:\\Users\\Jonatan\\Pictures\\2.png",
            "image/png", "Spring Framework".getBytes());
    Photo.Builder photoBuilder = new Photo.Builder(
            multipartFile
    );
    contribution.getElementsToAdd().add(photoBuilder.build());

    mockMvc
            .perform(post("/api/v1.0/movies/{id}/contributions/photos", 1)
                .contentType(...)
                .content(...))
            .andExpect(status().isCreated());
}

我不知道如何发送@ResuestBody这样的对象?我不知道如何完成这个测试。

最佳答案

你可以做这样的事情。

 ObjectMapper = new ObjectMapper();        // You can also Autowire this 
 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    mockMvc
     .perform(post("/api/v1.0/movies/{id}/contributions/photos", 1)
     .contentType(MediaType.APPLICATION_JSON)                   
     .content(objectMapper.writeValueAsString(contribution)))
     .andExpect(status().isCreated());

关于java - MockMvc - 使用复杂对象调用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062832/

相关文章:

java - 错误: "Module ' myApp' has verification error 2733 at offset 1646"mean是什么意思

java - 以不同方式呈现信息的模式

java - 除非存在 @autowired 依赖项,否则 Spring 框架不会调用 BeanPostProcessor

java - 如何确定使用本地unix服务器作为SMTP服务器的属性配置

api - 使用 CakePHP 通过 Put 发送 XML

java - 来自 OutputStream 的 ByteArrayOutputStream

java - 如何通过@Cacheable 注解记录缓存命中?

java - 处理来自一个 POST 请求的 3 个不同响应

java - 如何使用 JAX-RS 返回实际的 html 文件

java - 小数据的选择排序与快速排序