Tôi đang cố gắng để kiểm tra một lớp dịch vụ (trách nhiệm gọi lớp kho và thực hiện một số hoạt động nếu cần thiết), về cơ bản, đây là lớp tôi đang cố gắng để kiểm traGiả lập một cuộc gọi phương thức trong cùng một lớp mà tôi đang thử nghiệm, có thực sự là mã không?
class CarServiceImpl{
public Car findById(String id){
//call repository layer to find a car
}
public void deleteById(String id){
Car car = this.findById(id);
if(car != null){
//Call repository layer to update the car
}else{
Throw NotFOundException();
}
}
}
Như bạn có thể thấy tôi gọi phương thức findById trên phương thức deleteById, vì vậy các câu hỏi của tôi là.
thực sự là mã để gọi phương thức trên cùng một lớp? Tôi không nghĩ rằng tôi nên tạo một lớp học riêng biệt để tìm một chiếc xe bằng id.
làm thế nào tôi có thể thử các cuộc gọi đến "findById" vào phương pháp "deleteById", nếu tôi sử dụng
Mockito.when(carServiceImpl.findById("car1")).thenReturn(carModel);
nó ảnh tĩnh gọi phương thức vì vậy tôi sẽ cần phải thử cuộc gọi đến respository cho việc tìm kiếm bằng id quá, thậm chí khi tôi đã thử nghiệm phương thức findById.
Còn việc rời khỏi thao tác 'findById' đối với người gọi' deleteById' thì sao? Nếu any1 vượt qua một id không tồn tại, kho lưu trữ sẽ ném một ngoại lệ thích hợp và 'CarServiceImpl' của bạn có thể bắt và biến đổi (nếu cần) ngoại lệ đó trong ứng dụng của bạn hiểu. – pedromss