【发布时间】:2020-10-13 00:30:07
【问题描述】:
我只是想确保我不会发疯,但粗体方法会评估回购中是否不存在预订,对吗?我正在运行测试,当通过模拟的 id 时抛出异常。
public class BookingServices {
@Autowired
BookingRepo bookingRepo;
public Booking findBookingByBookingID(long bookingID) {
if (! bookingRepo.existsById(bookingID)) {
log.error("Booking not found");
throw new BookingException("Booking not found");
}
return bookingRepo.findById(bookingID).get();
}
**
测试类
**
class BookingServicesTest {
@InjectMocks
private BookingServices bookingServices;
@Mock
private BookingRepo mockRepo;
@BeforeEach
void init(){
MockitoAnnotations.initMocks(this);
}
@Test
void findBookingByBookingID() {
LocalDate bookingDate= LocalDate.of(2020,6,9);
LocalDateTime scheduledDate =LocalDate.of(2020,7,4).atTime(6,30);
Booking booking = new Booking();
booking.setUserId(12345);
booking.setBookingDate(bookingDate);
booking.setScheduleDateTime(scheduledDate);
Mockito.when(mockRepo.findById(5L)).thenReturn(Optional.of(booking));
System.out.println(mockRepo.findById(5L));
assertEquals(Optional.of(booking),bookingServices.findBookingByBookingID(5L));
}
【问题讨论】:
-
你可以调用
return bookingRepo.findById(bookingID).orElseThrow(BookingException::new);然后你只需要调用一次数据库。 -
这真是个好主意!谢谢!
标签: spring spring-boot spring-mvc jpa spring-data-jpa