Похоже, есть два варианта здесь:
Вариант 1: Настройка инъекции в @Before
вашего теста JUnit
//test doubles
String testDoubleApi;
//system under test
SomeClass someClass;
@Before
public void setUp() throws Exception {
String testDoubleApi = "testDouble";
Injector injector = Guice.createInjector(new Module() {
@Override
protected void configure(Binder binder) {
binder.bind(String.class).annotatedWith(Names.named("api")).toInstance(testDouble);
}
});
injector.inject(someClass);
}
Вариант 2: реорганизовать класс использовать конструктор впрыск
public class SomeClass{
private String api;
@Inject
SomeClass(@Named("api") String api) {
this.api = api;
}
public Observable<String> get(String uuidData){
//do something with "api" variable
}
}
Теперь ваш @Before
метод будет выглядеть следующим образом:
//test doubles
String testDoubleApi;
//system under test
SomeClass someClass;
@Before
public void setUp() throws Exception {
String testDoubleApi = "testDouble";
someClass = new SomeClass(testDoubleApi);
}
Из двух вариантов, я бы сказал, что второе является более предпочтительным. Вы можете видеть, что это приводит к значительно меньшей котельной плите, и класс можно протестировать даже без Guice.