в наших юнит-тестах и работает без нареканий.

ько начал играть с Guice, и один из вариантов использования, о котором я могу подумать, это то, что в тесте я просто хочу переопределить одну привязку. Я думаю, что я хотел бы использовать остальные привязки производственного уровня, чтобы убедиться, что все настроено правильно и избежать дублирования.

Итак, представьте, у меня есть следующий модуль

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);
    }
}

И в моем тесте я только хочу переопределить InterfaceC, сохраняя InterfaceA и InterfaceB в такте, поэтому я бы хотел что-то вроде:

Module testModule = new Module() {
    public void configure(Binder binder) {
        binder.bind(InterfaceC.class).to(MockC.class);
    }
};
Guice.createInjector(new ProductionModule(), testModule);

Я также попробовал следующее, но не повезло:

Module testModule = new ProductionModule() {
    public void configure(Binder binder) {
        super.configure(binder);
        binder.bind(InterfaceC.class).to(MockC.class);
    }
};
Guice.createInjector(testModule);

Кто-нибудь знает, можно ли делать то, что я хочу, или я полностью лаю не на том дереве ??

--- Продолжение: может показаться, что я могу добиться того, чего хочу, если я использую тег @ImplementedBy на интерфейсе, а затем просто предоставляю привязку в тестовом примере, который хорошо работает, когда между отображениями 1-1 интерфейс и реализация.

Кроме того, после обсуждения этого с коллегой может показаться, что мы пошли по пути переопределения всего модуля и обеспечения правильного определения наших модулей. Похоже, что это может вызвать проблему, хотя привязка в модуле неуместна и требует перемещения, что может привести к разрыву нагрузки на тесты, поскольку привязки могут быть недоступны для переопределения.

Ответы на вопрос(5)

Ваш ответ на вопрос