Когда я пытаюсь протестировать мой Api-контроллер с жестко запрограммированным объектом, все нормально, я пытаюсь добавить параметр LocalDate в объект.
Мой тест:
@RunWith(SpringRunner.class)
@WebMvcTest(ApiTransitController.class)
public class ApiTransitControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private TestService testService;
@MockBean
private ReportsService reportsService;
@MockBean
private TransitService transitService;
@Test
public void shouldCreateTransit() throws Exception {
Transit transit = new Transit("London", "Paris", 12L,
LocalDate.of(2018,10,12));
ObjectMapper objectMapper = new ObjectMapper();
String transitJsonString = objectMapper.writeValueAsString(transit);
this.mockMvc.perform(post("/api/transit")
.contentType(MediaType.APPLICATION_JSON)
.content(transitJsonString))
.andExpect(status().isCreated());
verify(transitService).addTransit(eq(new Transit("London", "Paris", 12L,
LocalDate.of(2018,10,12))));
}
}
Модель:
@ Открытый класс объекта Entity {
@Column(name = "id")
@Id
@GeneratedValue
private Long id;
private String sourceAdress;
private String destinationAdress;
private Long price;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private LocalDate date;
@JsonSerialize(using=DistanceSerializer.class)
private Long distance;
public Transit(String sourceAdress, String destinationAdress, Long price, LocalDate date) {
this.sourceAdress = sourceAdress;
this.destinationAdress = destinationAdress;
this.price = price;
this.date = date;
}
//getters and setters, equals and hashCode and toString
Контроллер API:
@PostMapping("/api/transit")
@ResponseStatus(HttpStatus.CREATED)
public void createTransit(@RequestBody Transit transit){
LOG.info("Saving transit={}", transit);
transitService.addTransit(transit);
}
Я попытался добавить DateTimeFormmater и несколько других способов, но все равно не могу пройти тест.Спасибо за ваше время.