Почему mockMvc возвращает 400 если передавать json с полем указанным в @JsonIdentityInfo?

При использовании аннотации @JsonIdentityInfo с параметрами, как указано в примере, если в mockMvc.perform(put()) передавать json с полем "id" то возвращается http-статус 400, а не 200. При обычном же, не тестовом вызове, все работает корректно, возвращается 200. Причем ошибка возникает до входа в метод контроллера, т.е. мой программный код не выполняется. Как можно решить это?

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class CardOrderDTO {
    private int id;
    private String client;
}


@WebMvcTest(CardOrderController.class)
class CardOrderControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private ObjectMapper objectMapper;

    @MockBean
    private CardOrderService cardOrderService;

    @SpyBean
    private ModelMapper ModelMapper;

    @SneakyThrows
    @Test
    public void givenCardOrderDTO_whenUpdateCardOrder_thenReturnOk(){
        // given
        var cardOrderDTO = CardOrderDTO.builder()
                .id(1)
                .client("Client1")
                .build();
        
        given(cardOrderService.findById(anyInt()))
                .willReturn(Optional.of(new CardOrder()));

        // when
        var response = mockMvc.perform(put("/card-order")
                .contentType(MediaType.APPLICATION_JSON)
                .content(objectMapper.writeValueAsString(cardOrderDTO)));

        // then
        response.andExpect(status().isOk());
    }
}

Ответы (0 шт):