Amy*_*hir 5 java mocking mockito optional java-8
我试图模拟一个对象,该对象使用Mockito返回一个Java Optional对象:
SomeObject someObject = new SomeObject();
Mockito.when(someSpringJpaRepository.findById(Mockito.any(UUID.class))).thenReturn(Optional.of(someObject));
Run Code Online (Sandbox Code Playgroud)
当someSpringJpaRepository.findById(UUID)被调用时,它返回Optional.empty。
我期望该方法findById()返回someObject。
为什么要返回Optional.empty呢?
方法如下:
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();
}
Run Code Online (Sandbox Code Playgroud)
这是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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |