Проблема в том, что вы явно говорите о своем Инжекторе. В идеале вы должны получать свои зависимости (тестер и джек) через конструктор, без необходимости устанавливать инжектор.
@Inject
public Dummy(Tester tester, Jack jack) {
this.tester = tester;
this.jack = jack;
}
Теперь в ваших тестах вы можете вызвать этот конструктор public
вручную и передать тот экземпляр экземпляра Tester или Jack, который вам нужен, включая (но не обязательно) двойной или ложный тест.
Dummy dummy = new Dummy(new UnitTestTester(), mockJack);
Поскольку вы аннотировали экземпляр с помощью @Inject
, вам не нужно беспокоиться об Injector: пока вы получаете копию Dummy из Injector, он будет читать этот конструктор и передавать ваши Tester и Jack экземпляры.
public class YourDummyConsumer {
@Inject public YourDummyConsumer(Dummy dummy) { /* ... */ }
}
getInstance
по-прежнему полезен, но обычно его можно увидеть только на самом верхнем уровне, в классе приложения или в методе public static void main(String[] args)
:
Dummy dummy = injector.getInstance(dummy);