Tôi muốn kiểm tra bộ điều khiển mvc mùa xuân của mình.Làm thế nào để bạn sử dụng tiêm của mùa xuân để kiểm tra đơn vị một bộ điều khiển?
Bộ điều khiển có một dịch vụ:
@Autowired
UserService userService
Và dịch vụ của tôi sử dụng phụ thuộc vào (autowired) UserDao của tôi và một số dịch vụ khác như MongoDB, vv
Bây giờ tôi muốn logic kinh doanh để được kiểm tra trong UserService của tôi, nhưng ofcourse tôi muốn giả lập các phản hồi từ UserDao và Mongodb của tôi, v.v.
Làm cách nào để thiết lập thử nghiệm đơn vị của tôi một cách chính xác?
Tôi có thể sử dụng lại tệp xml của vùng chứa lò xo có tất cả các hạt của tôi, v.v ... hay tôi tạo một tệp mới? (Tôi giả sử tôi phải lấy thùng chứa mùa xuân liên quan đến đây)
Tìm kiếm một số hướng dẫn về điều này, mọi hướng dẫn sẽ được đánh giá cao.
Cập nhật
gì tôi thấy lạ là đối với bộ điều khiển mùa xuân của tôi (mà không thực hiện từ Controller) tôi đã có thể truy cập vào varialbe tin của tôi để tự đặt dịch vụ của tôi, ví dụ:
@Controller
public class UserController {
@Autowired
UserService userService;
}
Và trong thử nghiệm đơn vị của tôi, tôi có thể làm:
UserController controller = new UserController();
controller.userService = ....
Nhưng đối với UserService của tôi, trong đó có UserDao autowired, tôi không thể truy cập tài sản userDao:
UserService userService = new UserServiceImpl();
userService.userDao = .... // not available
Có ý nghĩa vì nó là riêng tư, nhưng nó hoạt động như thế nào với bộ điều khiển của tôi?
Re: cập nhật, gói nào là bộ điều khiển, dịch vụ và thử nghiệm? Nếu thử nghiệm nằm trong cùng một gói, nó có thể truy cập các thuộc tính có phạm vi mặc định. Bỏ qua một công cụ sửa đổi truy cập không * không * tạo một thuộc tính riêng tư, thay vì [gói riêng tư] (http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html). –
Tôi có chúng trong cùng một gói. Ahh tôi hiểu rồi, tôi cho rằng nó là riêng tư. Tôi đã tự hỏi tại sao IntelliJ trong một refactor làm cho các lĩnh vực tư nhân theo mặc định. Vì vậy, tôi nên giữ chúng như là gói riêng tư sau đó? – Blankman
Không có "nên", nó chỉ phụ thuộc. Mối quan tâm duy nhất của tôi với gói riêng tư là bạn vẫn có thể truy cập một cái gì đó không chủ ý; Tôi có xu hướng thích giữ những thứ riêng tư và sử dụng setters, nhưng meh. –