我们有一个使用Compose作为视图层和Kodein作为所有依赖注入的Android应用程序。
我有一个BaseApplication类,它是DIAware:
class BaseApplication : Application(), DIAware {
override val di: DI = DI.lazy {
import(modules) // modules defined in respective packages
}
}
我还有一个MainActivity和一个导航图来管理不同的组件之间的导航。
问题: 在我的仪器化测试中,我如何正确地重写这些模块以适用于MainActivity?
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
val moduleOverrides = DI.Module(allowSilentOverride = true) {
// add bindings for fakes w/ allowOverride = true
}
@Before
fun setup() {
val application =
ApplicationProvider.getApplicationContext() as BaseApplication
// how can I override the BaseApplication modules for my test?
}
}
我似乎找不到任何明确的语言来说明这个问题,感觉自己错过了一些非常显而易见的东西。非常感谢任何帮助。