Tôi đã xem xét các câu hỏi tương tự trên bảng này, nhưng không ai trong số họ trả lời câu hỏi của tôi. Điều này nghe có vẻ kỳ lạ, nhưng nó có thể giả lập một cuộc gọi hàm tạo trên đối tượng bạn đang chế nhạo.EasyMock: Mock ra một cuộc gọi constructor trong java
Ví dụ:
class RealGuy {
....
public void someMethod(Customer customer) {
Customer customer = new Customer(145);
}
}
class MyUnitTest() {
public Customer customerMock = createMock(Customer.class)
public void test1() {
//i can inject the mock object, but it's still calling the constuctor
realGuyobj.someMethod(customerMock);
//the constructor call for constructor makes database connections, and such.
}
}
Làm thế nào tôi có thể mong đợi một cuộc gọi constructor? Tôi có thể thay đổi lời gọi hàm tạo của khách hàng để sử dụng newInstance, nhưng tôi không chắc liệu điều đó có hữu ích hay không. Tôi không kiểm soát được phần thân của hàm tạo new Customer(145)
.
Điều này có khả thi không?
Sẽ là một ý tưởng hay khi không tạo kết nối cơ sở dữ liệu trong một hàm tạo. Tiêm các kết nối vào lớp bằng cách sử dụng chúng. –
Đồng ý. Nhưng tôi không 'có quyền kiểm soát đối với logic của nhà xây dựng khách hàng đó. – Setzer