Вероятно, самая подробная и всесторонняя статья на this
такова:
Нежное объяснение ключевого слова этого «this» в JavaScript
Идея позади this
заключается в понимании того, что типы вызова функции имеют важное значение при установке значения this
.
Когда возникают проблемы с идентификацией this
, не спрашивайте себя:
Где
blockquote>this
взято из ?, но спросите себя:
Как вызывается функция ?
blockquote>arrow function (специальный случай прозрачности контекста) спросите себя:
Какое значение имеет
blockquote>this
, где определена функция стрелки ?Этот настрой правилен при работе с
this
и избавит вас от головной боли.
Это не могло бы быть ответом, который Вы ищете, но если Вы пишете модульные тесты, Вы, вероятно, не должны использовать инжектор и скорее вводить насмешку или поддельные объекты вручную.
, С другой стороны, если Вы действительно хотите заменить единственную привязку, Вы могли бы использовать 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
к отдельному модулю.