Переопределение связывания в Guice

Вероятно, самая подробная и всесторонняя статья на this такова:

Нежное объяснение ключевого слова этого «this» в JavaScript

Идея позади this заключается в понимании того, что типы вызова функции имеют важное значение при установке значения this.


Когда возникают проблемы с идентификацией this, не спрашивайте себя:

Где this взято из ?

blockquote>

, но спросите себя:

Как вызывается функция ?

blockquote>

arrow function (специальный случай прозрачности контекста) спросите себя:

Какое значение имеет this, где определена функция стрелки ?

blockquote>

Этот настрой правилен при работе с this и избавит вас от головной боли.

128
задан tddmonkey 29 January 2009 в 10:02
поделиться

1 ответ

Это не могло бы быть ответом, который Вы ищете, но если Вы пишете модульные тесты, Вы, вероятно, не должны использовать инжектор и скорее вводить насмешку или поддельные объекты вручную.

, С другой стороны, если Вы действительно хотите заменить единственную привязку, Вы могли бы использовать Modules.override(..):

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);
    }
}
public class TestModule implements Module {
    public void configure(Binder binder) {
        binder.bind(InterfaceC.class).to(MockC.class);
    }
}
Guice.createInjector(Modules.override(new ProductionModule()).with(new TestModule()));

Посмотрите детали здесь .

, Но поскольку javadoc для Modules.overrides(..) рекомендует, необходимо разработать модули таким способом, которым Вы не должны переопределять привязку. В примере Вы дали, Вы могли выполнить это путем перемещения привязки InterfaceC к отдельному модулю.

138
ответ дан Ryan Nelson 29 January 2009 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: