Java 放心,模拟Mvc不会选择自定义对象映射器
我对这篇文章有一个非常类似的问题: 但是,我使用的配置/型号略有不同,提供的答案并没有解决我的问题 在运行模拟mvc测试时,我的自定义ObjectMapper配置未被拾取。我已经尝试将这个配置类附加到RestAssuredMockMvc,但是当独立安装程序启动时,它似乎仍然没有响应 有什么想法吗Java 放心,模拟Mvc不会选择自定义对象映射器,java,spring-mvc,rest-assured,Java,Spring Mvc,Rest Assured,我对这篇文章有一个非常类似的问题: 但是,我使用的配置/型号略有不同,提供的答案并没有解决我的问题 在运行模拟mvc测试时,我的自定义ObjectMapper配置未被拾取。我已经尝试将这个配置类附加到RestAssuredMockMvc,但是当独立安装程序启动时,它似乎仍然没有响应 有什么想法吗 @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public abstract class BaseC
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public abstract class BaseClassForContractTests {
@Autowired
Controller controller;
@Before
public void setup() {
RestAssuredMockMvc.config = RestAssuredMockMvcConfig.config().objectMapperConfig(
ObjectMapperConfig.objectMapperConfig().jackson2ObjectMapperFactory(new Jackson2ObjectMapperFactory() {
@SuppressWarnings("rawtypes")
@Override
public ObjectMapper create(Class cls, String charset) {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
//objectMapper.setTimeZone(TimeZone.getTimeZone("America/New_York"));
//objectMapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, true);
return objectMapper;
}
})
);
RestAssuredMockMvc.standaloneSetup(controller);
}
}是的,这是件愚蠢/简单的事。如果任何人出现此问题,且未获取任何配置,则应使用RestAssuredMockMvc。webAppContextSetup(上下文);而不是孤立无援。你所要做的就是@Autowire一个webAppContext。我用
重新启动mockmvc.standaloneSetup安装了对象映射器,它对我很有用
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new
MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setObjectMapper(new ObjectMapper()));
RestAssuredMockMvc.standaloneSetup(
MockMvcBuilders.standaloneSetup(yourcontroller)
.setMessageConverters(mappingJackson2HttpMessageConverter)
);
虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-这帮助我解决了我的问题,就像我需要-+1!谢谢@shubham gulati