我找到了答案。
我在测试中改变了注射剂成分……如下所示:
@Inject
lateinit var someDependency: SomeDependency
val app = instrumentation.targetContext.applicationContext as MyApplication
app.injectorComponent = DaggerMockComponent.builder()
.mockModule(MockModule(app))
.build()
if (null == mockComponent) {
mockComponent = app.injectorComponent as MockComponent
mockComponent!!.inject(this)
}
open class MyApplication : Application(), HasActivityInjector {
@Inject
lateinit var androidInjector : DispatchingAndroidInjector<Activity>
lateinit var injectorComponent: InjectorComponent
override fun onCreate() {
super.onCreate()
buildInjector()
}
open fun buildInjector() {
injectorComponent = DaggerInjectorComponent.builder()
.dataModule(DataModule())
.appModule(AppModule(this))
.trackerModule(TrackerModule(this, FirebaseAnalytics.getInstance(this)))
.build()
}
override fun activityInjector(): AndroidInjector<Activity> = androidInjector
}
但是现在我在测试中使用了另一个应用程序,我扩展了默认应用程序(TestApplication)。在此应用中,我构建了一个不同的喷油器:
class TestApplication : MyApplication() {
override fun buildInjector() {
injectorComponent = DaggerMockComponent.builder().mockModule(MockModule(this)).build()
}
}
然后在测试中只需执行以下操作:
@Before
fun setUp() {
val app = instrumentation.targetContext.applicationContext as TestApplication
(app.injectorComponent as MockComponent).inject(this)
}