J'ai juste commencé à jouer avec Guice, et un cas d'utilisation, je pense que dans un test, je veux juste remplacer une liaison unique. Je pense que j'aimerais utiliser le reste de la production au niveau des liaisons pour s'assurer que tout est configuré correctement et d'éviter les doublons.
Imaginez donc j'ai le Module suivant
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);
}
}
Et dans mon test, j'ai seulement envie de remplacer InterfaceC, tout en gardant InterfaceA et InterfaceB dans le tact, donc je voudrais quelque chose comme:
Module testModule = new Module() {
public void configure(Binder binder) {
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(new ProductionModule(), testModule);
J'ai aussi essayé le suivant, avec pas de chance:
Module testModule = new ProductionModule() {
public void configure(Binder binder) {
super.configure(binder);
binder.bind(InterfaceC.class).to(MockC.class);
}
};
Guice.createInjector(testModule);
Personne ne sait si il est possible de faire ce que je veux ou je suis complètement aboiements le mauvais arbre??
--- Suivi de: Il semblerait que je puisse réaliser ce que je veux si je peux utiliser le @ImplementedBy tag sur l'interface, puis il suffit de fournir une liaison dans le cas du test, qui fonctionne très bien quand il y a un mappage 1-1 entre l'interface et la mise en œuvre.
Aussi, après discussion avec un collègue, il semblerait qu'on avait la tête en bas de la route de l'annulation de l'ensemble du module et de nous assurer que nous disposons de nos modules définis correctement. Cela semble comme il pourrait causer un problème si une liaison est égaré dans un module et doit être déplacé, ainsi briser éventuellement une charge de tests que les liaisons peuvent ne plus être disponibles pour être surchargée.