0

是否可以绑定 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
}

谢谢你的帮助!

4

0 回答 0