Objeto burlarse de que los rendimientos de Java 8 Objeto opcional con Mockito regresa vacía opcional

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.emptyen 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 @Mockclase en la que está haciendo nada. Que ha creado una instancia independiente de orderRepositoryque no se inyecta en la clase de servicio. Para inyectar su maqueta en el uso contexto@MockBean

Diferencia entre @Mocky @MockBean aquí

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=180933&siteId=1
Recomendado
Clasificación