Guice ile oynamaya yeni başladım ve düşünebileceğim bir kullanım örneği, bir testte sadece tek bir bağlayıcıyı geçersiz kılmak istiyorum. Sanırım her şeyin doğru bir şekilde kurulduğundan emin olmak ve çoğaltmayı önlemek için üretim seviyesi bağlantılarının geri kalanını kullanmak istiyorum.
Aşağıdaki Modüle sahip olduğumu düşünün
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);
}
}
Ve testimde, InterfaceA ve InterfaceB'yi incelikli tutarken sadece InterfaceC'yi geçersiz kılmak istiyorum, bu yüzden şöyle bir şey istiyorum:
Module testModule = new Module() {
public void configure(Binder binder) {
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(new ProductionModule(), testModule);
Ayrıca, şans olmadan aşağıdakileri denedim:
Module testModule = new ProductionModule() {
public void configure(Binder binder) {
super.configure(binder);
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(testModule);
İstediğimi yapmanın mümkün olup olmadığını bilen var mı yoksa tamamen yanlış ağacı havlıyor muyum ??
--- Takip et: Görünüşe göre, arayüzde @ImplementedBy etiketini kullanır ve daha sonra sadece 1-1 eşleme olduğunda güzel çalışan test durumunda bir bağlanma sağlarsam istediğim şeyi başarabilirim. arayüz ve uygulama.
Ayrıca, bunu bir meslektaşımla tartıştıktan sonra, tüm bir modülü geçersiz kılma ve modüllerimizin doğru bir şekilde tanımlanmasını sağlama yolunda ilerliyoruz. Bu, bir bağlantının bir modülde yanlış yerleştirildiği ve taşınması gerektiğinde bir soruna neden olabileceği gibi görünüyor, böylece bağların artık geçersiz kılınamayacağı için muhtemelen bir test yükünü kırıyor.