在Guice注入类中设置属性

时间:2016-02-25 15:22:46

标签: java junit dependency-injection guice

我正在使用Google Guice来绑定一个带有模拟类的类,用于某些单元测试。 这是我目前的代码:

@Override
protected void configure() {
    bind(ProductCaller.class).to(MockProductCaller.class);
}

在我的测试中:

Injector injector = Guice.createInjector(new JUnitMockBootstrapBinder());


@Before
public void init() {
    injector.getBinding(ProductCaller.class);
    injector.getInstance(ProductCaller.class);
}

但是在我的mock类中,我有一个属性,我想在mock实例化之前设置它。

public class MockProductCaller extends ProductCaller {
     private String jsonValue; // <---This value
}

知道怎么做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以注入注入@Named属性:

public class MockProductCaller extends ProductCaller {
     @Named("jsonValue") @Inject
     private String jsonValue; // <---This value
}

然后:

Injector injector = Guice.createInjector(new JUnitMockBootstrapBinder(), 
  new AbstractModule() {
    public void configure() {
      bind(String.class).annotatedWith(Names.named("jsonValue"))
        .toInstance("someValue");
    }
});