Я пытаюсь протестировать свои контроллеры с помощью MockitoRunner и spring, но возвращаемый объект всегда преобразует OffsetDate в метку времени, а не в строковый формат ISO-8601. Я попытался настроить Jackson.tester, но «ошибка» все еще происходит.
@Mock
val mensagemRepository: MensagemRepository? = null
var mensagemService: MensagemService? = null
var mvc: MockMvc? = null
var mensagemController: MensagemController? = null
@Before
fun carregaService() {
val objectMapper = ObjectMapper()
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
JacksonTester.initFields(this, objectMapper)
mensagemService = MensagemService(mensagemRepository!!)
mensagemController = MensagemController(mensagemService!!)
mvc = MockMvcBuilders.standaloneSetup(mensagemController).build()
}
@Test
fun searchPhrase() {
val resposta = "[{\"dataProc\":\"2020-01-22T13:46:46.000000695\",\"phrase\":\"TESTE\",\"status\":\"0\",\"statusStr\":null,\"cpf\":\"11111111111\"}]"
val retorno = LinkedList<Mensagem>()
val mensagemId = MensagemId()
mensagemId.date = LocalDateTime.of(2020, 1, 22, 13, 46, 46, 695)
val mensagem = MensagemRegistrato()
mensagem.mensagemRegistratoId = mensagemId
mensagem.Seg = "teste"
mensagem.SGR = "0"
mensagem.STR = null
mensagem.cpf = "teste"
retorno.add(mensagem)
BDDMockito.given(mensagemRepository!!.findByCpf("11111111111")).willReturn(retorno)
val response: MockHttpServletResponse = mvc!!.perform(
MockMvcRequestBuilders.get("/api/example-endpoint?cpf=11111111111")
.contentType("")
.accept(MediaType.APPLICATION_JSON)
).andReturn().response
assertEquals(resposta, response.contentAsString)
assertEquals(HttpStatus.OK.value(), response.status)
println(response)
}
Возвращение:
{"dataProc":1579711606.000000695,"phrase":"TESTE FRASE SQL","status":"0","statusStr":null,"cpf":"11111111111"}
Я убежден, что это происходит из-за неправильной конфигурации Джексона , но я не могу понять, как это сделать. Кто-нибудь знает, как настроить возврат OffsetDateTime как ISO-8601, используя Mock Mvc?