Amy Bachir:
Estoy tratando de burlarse de un objeto que devuelve un objeto Java opcional con Mockito:
SomeObject someObject = new SomeObject();
Mockito.when(someSpringJpaRepository.findById(Mockito.any(UUID.class))).thenReturn(Optional.of(someObject));
Cuando someSpringJpaRepository.findById(UUID)
se llama, devuelve Optional.empty
.
Estoy esperando el método findById()
para volver someObject
.
Ninguna razón por la que está volviendo Optional.empty
en su lugar?
Aquí está el método:
public UUID saveOrder(OrderDTO orderDto) {
Order order = new Order();
if (orderDto.getId() != null) {
Optional<Order> result = orderRepository.findById(orderDto.getId());
if (result != null && result.isPresent()) {
order = result.get(); // existing record
} else {
order.setId(UUID.randomUUID());
}
} else {
// new record
order.setId(UUID.randomUUID());
}
return order.getId();
}
Y aquí está el Junit:
@Test
public void saveOrderTest(){
@Autowired
private OrderApiService orderApiService;
@Mock
private OrderRepository orderRepository;
OrderDTO orderDto = new OrderDTO();
UUID orderID = UUID.randomUUID();
Order order = new Order();
order.setId(orderID);
orderDto.setId(orderID);
Mockito.when(orderRepository.findById(Mockito.any(UUID.class))).thenReturn(Optional.of(order));
assertNotNull(orderApiService.saveOrder(orderDto));
}
byebye:
Su @Mock
clase en la que está haciendo nada. Que ha creado una instancia independiente de orderRepository
que no se inyecta en la clase de servicio. Para inyectar su maqueta en el uso contexto@MockBean
Diferencia entre @Mock
y @MockBean
aquí