Tôi mới bắt đầu chơi với Guice và một trường hợp sử dụng mà tôi có thể nghĩ là trong một thử nghiệm tôi chỉ muốn ghi đè lên một ràng buộc duy nhất. Tôi nghĩ rằng tôi muốn sử dụng phần còn lại của các ràng buộc mức sản xuất để đảm bảo mọi thứ được thiết lập chính xác và để tránh trùng lặp.
Hãy tưởng tượng tôi có Module sau
public class ProductionModule implements Module {
public void configure(Binder binder) {
binder.bind(InterfaceA.class).to(ConcreteA.class);
binder.bind(InterfaceB.class).to(ConcreteB.class);
binder.bind(InterfaceC.class).to(ConcreteC.class);
}
}
Và trong thử nghiệm của mình, tôi chỉ muốn ghi đè lên InterfaceC, trong khi vẫn giữ giao diện InterfaceA và InterfaceB, vì vậy tôi muốn một cái gì đó như:
Module testModule = new Module() {
public void configure(Binder binder) {
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(new ProductionModule(), testModule);
Tôi cũng đã thử những điều sau đây, không có may mắn:
Module testModule = new ProductionModule() {
public void configure(Binder binder) {
super.configure(binder);
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(testModule);
Có ai biết nếu nó có thể làm những gì tôi muốn hoặc tôi hoàn toàn sủa sai cây ??
--- Theo dõi: Dường như tôi có thể đạt được những gì tôi muốn nếu tôi sử dụng thẻ @Im HiệnedBy trên giao diện và sau đó chỉ cung cấp một ràng buộc trong trường hợp thử nghiệm, hoạt động độc đáo khi có ánh xạ 1-1 giữa giao diện và cách thực hiện.
Ngoài ra, sau khi thảo luận điều này với một đồng nghiệp, có vẻ như chúng ta sẽ đi vào con đường ghi đè toàn bộ mô-đun và đảm bảo chúng ta có các mô-đun được xác định chính xác. Điều này có vẻ như có thể gây ra sự cố mặc dù liên kết bị đặt sai vị trí trong mô-đun và cần phải di chuyển, do đó có thể phá vỡ một loạt các bài kiểm tra vì các ràng buộc có thể không còn có thể bị quá tải.