我正在使用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
}
知道怎么做到这一点吗?
答案 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");
}
});