小编jsd*_*547的帖子

自定义的ObjectMapper未在测试中使用

我使用Spring Framework,版本4.1.6,使用Spring Web服务,没有Spring Boot.为了学习这个框架,我正在编写一个REST API并进行测试,以确保从命中端点收到的JSON响应是正确的.具体来说,我想调整ObjectMapperPropertyNamingStrategy'用下划线小写’命名策略使用.

我正在使用Spring的博客上详细介绍的方法来创建一个新的ObjectMapper并将其添加到转换器列表中.具体如下:

package com.myproject.config;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.context.annotation.*;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.List;

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = jacksonBuilder();
        converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    }

    public Jackson2ObjectMapperBuilder jacksonBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

        return builder;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我运行以下测试(使用JUnit,MockMvc和Mockito)来验证我的更改:

package com.myproject.controller;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock; …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc jackson

28
推荐指数
4
解决办法
2万
查看次数

标签 统计

jackson ×1

spring ×1

spring-mvc ×1