是否可以绑定 aProvider<T>
而不仅仅是一个实例T
?
例如,我有这个:
@Component()
interface Module {
@Component.Builder
interface Builder {
@BindsInstance
fun config(config: Config): Builder
}
}
我想做这样的事情(但它不起作用):
@Component()
interface Module {
@Component.Builder
interface Builder {
@BindsInstance
fun config(config: Provider<Config>): Builder
}
}
我想做什么?
注意:Config 类是不可变的
我希望能够更改不同测试的配置值,例如
class Test {
val configProvider: CustomProvider<Config>
val classUnderTest: Provider<T>
@Before
fun setUp() {
val module = DaggerModule()
.setConfig(configProvider)
.build()
// Do other setup with module
classUnderTest = module.getTestClassProvider()
}
@Test
fun test() {
configProvider.setValue(CONFIG_1)
classUnderTest.get().doSomething();
}
@Test
fun test2() {
configProvider.setValue(CONFIG_2)
classUnderTest.get().doSomething();
}
}
我试图避免必须在每个测试用例中完成构建模块,然后调用另一个函数来处理完成设置,例如
@Before
fun setUp() {
moduleBuilder = DaggerModule()
}
@Test
fun test() {
val module = moduleBuilder.setConfig(CONFIG_1).build()
finishSetup(module)
// Do test
}
谢谢你的帮助!